Моя установка pytest работает очень медленно, особенно на этапе сбора.
Итак, я установил настройку pytest для своего проекта Django, и тестовые файлы каждого приложения Django находятся в отдельной папке, т. Е. Дерево выглядит следующим образом
root
|
+--a
| |
| +--tests
| |
| +--conftest.py
| +--testAa.py
| +--testBa.py
+--b
| |
| +--tests
| |
| +--conftest.py
| +--testAb.py
| +--testBb.py
...
pytest.ini
Файл pytest.ini указывает, где искать тесты, и имеет следующий контент
[pytest]
DJANGO_SETTINGS_MODULE = project.project.settings.test
python_files = tests.py test_*.py *_tests.py
addopts = --reuse-db
Для каждого приложения в папке tests
у меня есть файл с именем contest.py
. Этот файл создает набор объектов, которые многократно используются в тестовых файлах. Например, если объект класса A
используется более одного раза, конкурс создает эту переменную один раз, и тесты используют этот конкурс в качестве входных данных. Каждый конкурс имеет декоратор @pytest.fixture(scope="function")
, а тесты - декоратор @pytest.mark.django_db
.
Я не думаю, что время загрузки вызвано конфликтами или декораторами, описанными в предыдущем абзаце, а скорее древовидной структурой и файлом pytest.ini
, который я выложил. Есть ли правила для того, что является хорошей структурой для этого? Как я уже сказал, время загрузки чрезвычайно велико для сбора тестов. Чтобы быть более точным, у меня есть около 80 тестов, и сбор их занимает около 40 секунд. Запуск их всех занимает дополнительно 20.