2 000 тестов: CI с 20 до 1,5 минуты.
Настроил параллельный запуск pytest-xdist и отдельные таблицы тестовых данных для каждого воркера.
Исходная задача
Набор из примерно 2 000 тестов выполнялся в CI около 20 минут. Это замедляло проверку изменений и обратную связь для разработчиков.
Мой вклад
Я настроил параллельный прогон pytest-xdist и раздельные PostgreSQL-таблицы для каждого воркера, чтобы тесты работали с собственными данными.
Инженерный подход
Для изоляции данных PostgreSQL фикстуры pytest использовали worker_id и создавали отдельные ORM mappings/metadata объектов таблиц для каждого xdist-воркера. У каждого были свои тестовые таблицы, а не отдельная база или схема.
Результат
Время CI-прогона сократилось примерно с 20 минут до 1,5 минуты — почти в 13 раз.
Показатели относятся к выполнению набора примерно из 2 000 тестов в CI. Результат достигнут при параллельном запуске с изоляцией тестовых таблиц.