如何解决 PytestConfigWarning: Unknown config option: DJANGO_ SETTINGS_MODULE 错误?

How to solve PytestConfigWarning: Unknown config option: DJANGO_ SETTINGS_MODULE error?

我正在使用 django 构建我的网站并且我使用 django-pytest 来测试我的应用程序但是我遇到了这个错误 注意我用的是python3.9

================================================================== warnings summary 

===================================================================
..\venv\lib\site-packages\_pytest\config\__init__.py:1233
  c:\users\eng_diaa_shalaby\desktop\unittest\venv\lib\site-packages\_pytest\config\__init__.py:1233: PytestConfigWarning: Unknown config option: DJANGO_
SETTINGS_MODULE

    self._warn_or_fail_if_strict(f"Unknown config option: {key}\n")

-- Docs: https://docs.pytest.org/en/stable/warnings.html

这是我的pytest.ini文件内容

# -- FILE: pytest.ini (or tox.ini)
[pytest]
DJANGO_SETTINGS_MODULE = testing_settings
# -- recommended but optional:
python_files = tests.py test_*.py *_tests.py

我运行这个命令

pytest

这是我的 venv 包

Package       Version
------------- -------
asgiref       3.3.4
atomicwrites  1.4.0
attrs         21.2.0
colorama      0.4.4
coverage      5.5
Django        3.2.4
django-pytest 0.2.0
iniconfig     1.1.1
packaging     20.9
pip           21.1.2
pluggy        0.13.1
py            1.10.0
pyparsing     2.4.7
pytest        6.2.4
pytz          2021.1
setuptools    57.0.0
sqlparse      0.4.1
toml          0.10.2

我找到了问题的原因。 我刚卸载

django-pytest 0.2.0

并安装

pytest-django

改为 运行 执行以下命令

pip install pytest-django

和运行安装pip后的以下命令pytest-django

set DJANGO_SETTINGS_MODULE=testing.settings

一切正常。

您应该通过删除 =:

周围的空格来更正您的 pytest.ini 文件
[pytest]
DJANGO_SETTINGS_MODULE=your_project_name.settings

注意: 根据 Django 结构,您的项目应该有一个包含 settings.py 文件的子文件夹。您需要将 pytest 指向此文件并使用点 . 而不是 /.

警告

PytestConfigWarning: Unknown config option: some-name

表示配置选项 some-name 不为 pytest 或任何当前安装的 pytest 插件所知(正如警告所暗示的那样)。特别是,这里表示 pytest-django 没有安装,或者由于某种原因 pytest 不可见(例如,您使用错误的 pip 命令安装了 pytest-django ).

要排除故障,首先列出 pytest 使用 pytest -VV:

找到的所有已安装插件
$ pytest -VV
This is pytest version 6.2.5, imported from /private/tmp/so/lib/python3.9/site-packages/pytest/__init__.py
setuptools registered plugins:
  pytest-django-4.5.2 at /private/tmp/so/lib/python3.9/site-packages/pytest_django/plugin.py
  pytest-cov-3.0.0 at /private/tmp/so/lib/python3.9/site-packages/pytest_cov/plugin.py

此处,pytest 报告发现了两个插件:pytest-covpytest-django

现在,如果未列出 pytest-django,请检查它的安装位置,例如发出 pip show pytest-django 并在 Location:

下寻找路径
$ pip show pytest-django
...
Location: /private/tmp/so/lib/python3.9/site-packages

或者,如果 pip 对您不可用,请检查从哪里 Python 从 via

导入 pytest_django
$ python -c 'import pytest_django; print(pytest_django.__path__[0])'
/private/tmp/so/lib/python3.9/site-packages/pytest_django

两个输出中 site-packages 目录的路径应该匹配。在此示例中,pytest -VVpip show pytest-django 都将 /private/tmp/so/lib/python3.9/site-packages 报告为安装路径。如果不同,请使用正确的 Python 环境重新安装 pytest-django