【发布时间】:2020-01-09 10:18:43
【问题描述】:
我安装了 pytest-django == 2.9.1 我开始按照说明搭建测试环境。 https://pytest-django.readthedocs.io/en/latest/tutorial.html#step-2-point-pytest-to-your-django-settings
第二步,在项目的根目录下,我创建了一个pytest.ini文件,并在里面添加了DJANGO_SETTINGS_MODULE(全部按照说明进行) 但是当你开始测试时,就会出现错误
django.core.exceptions.ImproperlyConfigured: Requested setting CACHES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
但是 DJANGO_SETTINGS_MODULE 是在 pytest.ini 中定义的! 我尝试将 pytest.ini 放在不同的目录中,但结果总是一样的。 我尝试使用参数--ds运行,但结果仍然相同。 你能告诉我为什么会这样吗?
UPD
嗯...我从文件头中删除 [pytest] 并收到错误“未定义节头”该文件似乎没有被忽略,但 DJANGO_SETTINGS_MODULE 仍未导出。
我尝试将它单独添加到环境变量中并在启动时收到错误
导出 DJANGO_SETTINGS_MODULE=project.settings.test_settings
pytest
ImportError: Could not import settings 'project.settings.test_settings'(它在 sys.path 上吗?设置文件中是否存在导入错误?):没有名为 project.settings.test_settings 的模块
但在启动时 python manage.py runserver --settings=project.settings.test_settings 一切正常
【问题讨论】:
-
显示您的目录树。另外,你能导入模块吗?运行
python -c "import project.settings.test_settings",可以吗? -
我的情况完全相同。导入对我有用,但 pytest 忽略了 pytest.ini 文件中定义的 django 设置。它还会忽略“DATABASES”下定义的“TEST”键,并使用默认值。
标签: pytest