Ответ вслух Middle pytest и фикстуры обновлено

Фикстуры pytest

Вопрос

Расскажите, что такое фикстуры pytest и как вы ими пользуетесь в проекте.

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «Фикстура это функция, которая готовит то, что нужно тесту, и отдаёт через аргумент. Я пишу их через yield: до yield создание, после очистка, и очистка выполнится, даже если тест упал.

Что должно прозвучать в ответе

  • Фикстура готовит окружение и отдаёт его через аргумент теста

  • yield: setup до, teardown после, срабатывает при падении

  • Скоупы и их выбор: дорогое в session, изменяемое в function

  • conftest.py по уровням проекта, зависимости между фикстурами

  • Параметризация фикстур и фабрики

Что могут спросить следом

  • Что будет, если session-фикстура зависит от function?
  • Как работают фикстуры с xdist?
  • Как подменить переменную окружения в тесте?

Разбор

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

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме