Pytest не находит каталог с моими настройками

Я попытался запустить pytest, но файл настроек не может быть найден pytest

Я нахожусь в virtualenv с Python 3.11.9 и pytest 8.3.2

ImportError: No module named 'drf.settings'
pytest-django could not find a Django project (no manage.py file could be found). You must explicitly add your Django project to the Python path to have it picked up.

здесь структура моего проекта

├── README.md
├── drf
│   ├── drf
│   │   ├── __init__.py
│   │   ├── production_settings.py
│   │   ├── settings.py
│   │   ├── urls.py
│   │   └── wsgi.py
│   ├── manage.py
│   └── tests
│       ├── __pycache__
│       │   └── test_auth.cpython-311-pytest-8.3.2.pyc
│       ├── factory_boy
│       │   ├── __pycache__
│       │   │   └── factory_models.cpython-311.pyc
│       │   └── factory_models.py
│       └── test_auth.py
├── drf-uwsgi.ini
├── pytest.ini
├── requirements.in
├── requirements.txt

и вот содержимое файла pytest.ini

[pytest]
DJANGO_SETTINGS_MODULE = drf.settings.py
python_files = test_*.py

Что я пробовал до сих пор:

  • Я попытался добавить init.py в каталог tests (кажется, это не рекомендуется и не сработало)
  • деактивировать и снова активировать virtualenv
  • поменяйте drf.settings.py на drf.drf.settings, но ничего
  • запустите pytest как модуль с помощью python -m pytest tests

редактировать:

  • если я cd drf и попробую, то получу немного другую ошибку
ImportError: No module named 'drf.settings.py'; 'drf.settings' is not a package

pytest-django found a Django project in . (it contains manage.py) and added it to the Python path.
If this is wrong, add "django_find_project = false" to pytest.ini and explicitly manage your Python path.

Если у вас есть какие-либо предложения ;)

Вам нужно добавить pythonpath внутри pytest.ini следующим образом:

[pytest]
pythonpath = drf
DJANGO_SETTINGS_MODULE = drf.settings
python_files = test_*.py

Или вы можете изменить расположение tests и переместить pytest.ini из корня проекта в папку tests так SO post.


Примечание: используйте drf.settings вместо drf.settings.py

Вернуться на верх