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 или изменять способ выполнения тестов?
Мы будем признательны за любую помощь!