我以前也遇到过类似的问题,我收到了一个几乎相同的错误消息,即
C:\Users\David J\optilab\optilab_project>python functional_tests.py
Traceback (most recent call last):
File "functional_tests.py", line 4, in <module>
from optilab.models import Design
File "C:\Users\David J\optilab\optilab_project\optilab\models.py", line 10, in <module>
class Design(models.Model):
File "C:\Users\David J\optilab\optilab_project\optilab\models.py", line 11, in Design
name = models.CharField(max_length=30)
File "C:\Python27\lib\site-packages\django\db\models\fields\__init__.py", line 1072, in __init__
super(CharField, self).__init__(*args, **kwargs)
File "C:\Python27\lib\site-packages\django\db\models\fields\__init__.py", line 166, in __init__
self.db_tablespace = db_tablespace or settings.DEFAULT_INDEX_TABLESPACE
File "C:\Python27\lib\site-packages\django\conf\__init__.py", line 55, in __getattr__
self._setup(name)
File "C:\Python27\lib\site-packages\django\conf\__init__.py", line 41, in _setup
% (desc, ENVIRONMENT_VARIABLE))
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
但是它的产生是因为我在shell中错误地调用了我的测试。现在我正在尝试运行一个功能测试,在成功使用命令之前,我已经做了好几次了
"python functional_tests.py"
在我的项目文件夹中——但它会产生上面的错误消息。有人能告诉我我做错了什么吗?或者为什么这以前有用,但现在不行?谢谢。在
编辑: 这是功能性的_测试.py公司名称:
^{pr2}$
脚本的开头应该是这样的
这是因为Django在尝试调用settings之前没有正确设置,它无法知道在没有
"DJANGO_SETTINGS_MODULE"
变量的情况下应该使用哪些项目设置,django.setup()
调用对于导入模型和访问数据库至关重要。(该方法见e4c5's answer)然而,这不是推荐的方法,也不是最简单的方法。您可以像调用
manage.py test
中的单元测试一样调用函数测试,Django将自动为您设置一切,它甚至会为功能测试使用tempdb。如果您的功能测试在功能测试中包括插入和更新(您应该这样做),tempdb就派上了用场。在但是要使用这个工具,您必须在代码中更改一些内容。在
首先是文件名的问题,}来更改它,但通常的解决方案是重命名functional_测试.py到测试.py把它放在一个功能性的测试文件夹里。这样您就可以通过调用
manage.py test
(doc)的默认模式是“test*.py”,您可以用-p
或{manage.py test functional_tests
来调用函数测试。在另外,与其从unittest导入TestCase,还不如研究一下使用}(doc),这样可以省去自己运行
TestCase
(doc)来自django.test
甚至是{manage.py runserver
的麻烦。在相关问题 更多 >
编程相关推荐