Фикстуры pytest
Вопрос
Расскажите, что такое фикстуры pytest и как вы ими пользуетесь в проекте.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Фикстура готовит окружение и отдаёт его через аргумент теста
yield: setup до, teardown после, срабатывает при падении
Скоупы и их выбор: дорогое в session, изменяемое в function
conftest.py по уровням проекта, зависимости между фикстурами
Параметризация фикстур и фабрики
Что могут спросить следом
- Что будет, если session-фикстура зависит от function?
- Как работают фикстуры с xdist?
- Как подменить переменную окружения в тесте?
Разбор
Образцовый ответ: «Фикстура это функция, которая готовит то, что нужно тесту, и отдаёт через аргумент. Я пишу их через yield: до yield создание, после очистка, и очистка выполнится, даже если тест упал. Скоуп выбираю по стоимости и изменяемости: клиент API и браузер session, пользователь и заказ function. Фикстуры лежат по conftest: в корне клиенты и конфиг, в папках доменов фабрики данных вроде make_order. Фабрика возвращает функцию и запоминает созданные объекты, чтобы удалить их в teardown. Браузеры параметризую через params, чтобы один тест шёл в нескольких»).
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.