【问题标题】:Pytest ignores pytest.ini filePytest 忽略 pytest.ini 文件
【发布时间】: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


【解决方案1】:

有同样的问题,有2个问题:

  1. settings.py 有一个错误。
  2. pytest-django 安装在不同的环境中。

因此,请确保您可以按照 hoefling 的建议导入 settings.py,并确保您的环境中实际安装了 pytest-django

【讨论】:

    【解决方案2】:

    所以docs说选择设置时的优先顺序是

    命令行 环境变量 pytest.ini 文件。

    然后进一步说您可以使用addopts 覆盖此优先级。 就我而言,我指定了如下设置

    DJANGO_SETTINGS_MODULE=bm.settings.ttest
    addopts = --ds=bm.settings.ttest
    

    它有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-19
      • 1970-01-01
      • 1970-01-01
      • 2019-04-25
      • 2020-05-30
      • 1970-01-01
      相关资源
      最近更新 更多