Поведение коллекции тестов pytest-django непоследовательно
У меня есть проект Django, который настроен с помощью pytest-django
, и, казалось бы, все работает просто отлично. Однако недавно я добавил тесты в тестовый файл и заметил, что они не подхватываются командой pytest
. Вот несколько вещей, которые я пробовал:
- Добавление
@pytest.mark.django_db
к новым тестам приводит к их корректному сбору, но этот декоратор должен использоваться только в случае необходимости доступа к базе данных, а этим тестам доступ к базе данных не нужен. - Перемещение немаркированных тестов так, чтобы они находились после маркированного теста в том же файле, приводит к тому, что 3 немаркированных теста подхватываются бегуном тестирования, но теперь маркированный тест не собирается.
- Запуск pytest на этом конкретном файле приводит к тому, что все тесты будут собраны (и пройдены) с декораторами или без них на тестах, которым они не нужны.
Мне не удалось обнаружить ничего неправильного в конфигурации pytest, хотя я отметил, что мы также используем инструмент Coverage для измерения покрытия кода тестами. Файл pytest.ini очень прост:
[pytest]
env_files = .env
addopts = --cov . --cov-report html --cov-report xml --cov-config "coverage/.coveragerc" --disable-warnings
DJANGO_SETTINGS_MODULE = config.settings.test
Я также заметил, что эта проблема относится не только к этому одному файлу; есть еще несколько файлов с немаркированными тестами, которые не собираются pytest, хотя такое поведение кажется непоследовательным.
Как заставить pytest собирать все тесты в файле независимо от того, запускаю ли я pytest на одном файле или на всех файлах, независимо от того, украшены ли тесты излишне, а также независимо от порядка тестов внутри файлов?