当前位置: 代码迷 >> python >> 为什么鼻子看不到我的任何环境变量?
  详细解决方案

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

热度:21   发布时间:2023-07-14 09:48:31.0

我刚刚开始使用 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 不能?

正如 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

显然,nose 在django/db/backends/creation.py create_test_db() ,因此您会看到此错误。 只需将其设置为None ,或者自己调用该方法。 不确定这是否已在最新版本的 Django 中修复。

  相关解决方案