ModuleNotFoundError: Нет модуля с именем "app.project" при запуске pytest в проекте Django в GitLab CI

У меня возникли проблемы с запуском тестов с помощью pytest в проекте Django на GitLab CI. Структура моего проекта выглядит следующим образом:

my-project/
├── app/
│   ├── app/
│   │    ├── settings.py
│   │    ├── (other Django files)
│   │    └── __init__.py
│   └── project/
│        ├── __init__.py
│        ├── models.py
│        └── tests/
│            ├── __init__.py
│            └── test_models.py
├── pytest.ini
└── conftest.py

В моем тестовом файле (project/tests/test_models.py) я импортирую свои модули следующим образом:

from project.models import User, Course, Lesson, Exercise

В моей конфигурации pytest (pytest.ini) также есть следующее:

[pytest]
DJANGO_SETTINGS_MODULE = app.app.settings

Когда я запускаю pytest из конвейера GitLab CI:

docker --context digitavox compose -f docker-compose.yml exec -T app bash -c 'export DJANGO_SETTINGS_MODULE=app.settings && export PYTHONPATH=$(pwd):$(pwd)/app && pytest -v --collect-only --disable-warnings'

Я получаю следующую ошибку: ModuleNotFoundError: Нет модуля с именем "app.project"

Я убедился, что:

  • Все необходимые файлы init.py присутствуют.
  • В тестах используется инструкция import из project.models import ... (без префикса “app.”).
  • Файл conftest.py расположен в корневом каталоге проекта, поэтому корневой каталог проекта должен быть добавлен в sys.path автоматически при запуске pytest.

Мой вопрос заключается в следующем: Как мне следует настроить PYTHONPATH или скорректировать мой импорт / структуру, чтобы pytest мог правильно находить мои модули при запуске в GitLab CI? Нужно ли мне добавлять какие-либо дополнительные настройки в pytest.ini или изменять способ выполнения тестов?

Мы будем признательны за любую помощь!

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