为什么Nose看不到我的任何环境变量?

时间:2010-02-10 20:22:25

标签: python django nose

我刚刚开始使用Nose和Nosetests,我的测试失败了,因为Nose看不到环境变量。

到目前为止,错误: AttributeError:'Settings'对象没有属性'DJANGO_SETTINGS_MODULE'

我通过从.bash_profile

导出DJANGO_SETTINGS_MODULE来修复此问题
export DJANGO_SETTINGS_MODULE="settings"

现在我看到了:
AttributeError:'Settings'对象没有属性'DATABASE_SUPPORTS_TRANSACTIONS'

为什么iPython和Django网络服务器能够看到这些ENV变量,但Nose不能?

2 个答案:

答案 0 :(得分:2)

正如Alok所说,Nose不会从django.db.backends.creation调用BaseDatabaseCreation.create_test_db('None'),因此您需要手动设置此设置。

我无法让它发挥作用。

然而,我找到了NoseDjango。

使用以下命令安装NoseDjango:

easy_install django-nose  

由于django-nose扩展了Django的内置测试命令,你应该将它添加到settings.py中的INSTALLED_APPS:

INSTALLED_APPS = (
...
'django_nose',
...
)

然后在settings.py中设置TEST_RUNNER:

TEST_RUNNER = 'django_nose.run_tests'

设置NoseDjango后,您可以通过以下方式运行鼻子测试:

manage.py test

答案 1 :(得分:1)

显然在create_test_db()中有doesn't call django/db/backends/creation.py个鼻子,所以您看到了这个错误。只需将其设置为None,或自行调用方法即可。不确定这是否在最新版本的Django中得到修复。