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

I am using django to build my website and I have used django-pytest to test my apps but I have got this error Note I am usign python 3.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

This is my pytest.ini file content

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

and I run this command

pytest

and this is my venv packages

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


Solution 1:[1]

I found out what was the reason for my problem. I just uninstall

django-pytest 0.2.0

and install

pytest-django

instead by running the following command

pip install pytest-django

and run the following command after pip installed pytest-django

set DJANGO_SETTINGS_MODULE=testing.settings

And everything just works fine.

Solution 2:[2]

The warning

PytestConfigWarning: Unknown config option: some-name

means that the config option some-name is not known to pytest or any of the currently installed pytest plugins (just what the warning implies). In particular, here it means that either pytest-django is not installed, or it is not visible to pytest for some reason (e.g. you have installed pytest-django using the wrong pip command).

To troubleshoot, first list all installed plugins that pytest finds using 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

Here, pytest reports that two plugins are found: pytest-cov and pytest-django.

Now, if pytest-django is not listed, check where it was installed by e.g. issuing pip show pytest-django and looking for the path under Location:

$ pip show pytest-django
...
Location: /private/tmp/so/lib/python3.9/site-packages

Or, if pip is not available for you, check where Python import pytest_django package from via

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

The paths to site-packages directory in both outputs should match. In this example, both pytest -VV and pip show pytest-django report /private/tmp/so/lib/python3.9/site-packages as the installation path. If those differ, reinstall pytest-django using the correct Python environment.

Solution 3:[3]

You should correct your pytest.ini file by removing spaces around =:

[pytest]
DJANGO_SETTINGS_MODULE=your_project_name.settings

Note: per Django structure, your project should have a subfolder with settings.py file in it. You need to point pytest to this file and use dot . instead of /.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Montaro
Solution 2
Solution 3 MjH