问题描述
我刚刚开始使用 Nose 和 Nosetests,我的测试失败了,因为 Nose 看不到环境变量。
到目前为止,错误: AttributeError: 'Settings' object has no attribute 'DJANGO_SETTINGS_MODULE'
我通过从 .bash_profile 导出 DJANGO_SETTINGS_MODULE 解决了这个问题
export DJANGO_SETTINGS_MODULE="settings"
现在我看到:
AttributeError: 'Settings' 对象没有属性 'DATABASE_SUPPORTS_TRANSACTIONS'
为什么 iPython 和 Django 网络服务器能够看到这些 ENV 变量,而 Nose 不能?
1楼
正如 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.NoseTestSuiteRunner'
一旦设置了 NoseDjango,您就可以通过以下方式运行您的 Nose 测试:
manage.py test
2楼
显然,nose 在django/db/backends/creation.py
create_test_db()
,因此您会看到此错误。
只需将其设置为None
,或者自己调用该方法。
不确定这是否已在最新版本的 Django 中修复。