1

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

到目前为止,错误: AttributeError: 'Settings' object has no attribute 'DJANGO_SETTINGS_MODULE'

我通过从 .bash_profile 导出 DJANGO_SETTINGS_MODULE 解决了这个问题

export DJANGO_SETTINGS_MODULE="settings"

现在我看到:
AttributeError: 'Settings' object has no attribute 'DATABASE_SUPPORTS_TRANSACTIONS'

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

4

2 回答 2

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.NoseTestSuiteRunner'

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

manage.py test
于 2010-02-10T21:24:11.910 回答
1

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

于 2010-02-10T20:30:04.050 回答