Вернуться к кейсам

2 000 тестов: CI с 20 до 1,5 минуты.

Настроил параллельный запуск pytest-xdist и отдельные таблицы тестовых данных для каждого воркера.

~13×сокращение времени CI
Pythonpytestpytest-xdistPostgreSQLCI/CD

Исходная задача

Набор из примерно 2 000 тестов выполнялся в CI около 20 минут. Это замедляло проверку изменений и обратную связь для разработчиков.

Мой вклад

Я настроил параллельный прогон pytest-xdist и раздельные PostgreSQL-таблицы для каждого воркера, чтобы тесты работали с собственными данными.

Инженерный подход

Для изоляции данных PostgreSQL фикстуры pytest использовали worker_id и создавали отдельные ORM mappings/metadata объектов таблиц для каждого xdist-воркера. У каждого были свои тестовые таблицы, а не отдельная база или схема.

Результат

Время CI-прогона сократилось примерно с 20 минут до 1,5 минуты — почти в 13 раз.

Что стоит за результатом

Показатели относятся к выполнению набора примерно из 2 000 тестов в CI. Результат достигнут при параллельном запуске с изоляцией тестовых таблиц.