'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 |
