Выбор ответа Middle Тестирование и pytest обновлено
scope у фикстуры
Вопрос
Фикстура поднимает контейнер PostgreSQL за 5 секунд. Какой scope разумнее, если тестов 300?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: session для контейнера, данные изолировать откатом. С scope="function" 300 тестов потратят 25 минут только на старт контейнеров.
Варианты ответа
functionдля контейнера, чтобы тесты были изолированыsessionдля контейнера, данные изолировать откатомправильный ответclassдля контейнера, по одному на тестовый класс- Без фикстуры, поднимать контейнер в каждом тесте
Разбор
С scope="function" 300 тестов потратят 25 минут только на старт контейнеров. Тяжёлый ресурс создают один раз на сессию, а изоляцию данных обеспечивают дешёвыми средствами: транзакция с откатом, очистка таблиц, отдельная схема. class уменьшит, но не решит проблему, а ручной запуск в тестах ещё хуже.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.