Как передать данные из теста в фикстуру pytest, в том числе до запуска теста и для teardown после него?

До запуска теста параметры передают fixture через indirect-параметризацию и request.param; для динамического создания и teardown удобна factory-fixture с учётом ресурсов.

Короткий ответ

Что ответить на собеседовании

До запуска теста параметры передают fixture через indirect-параметризацию и request.param; для динамического создания и teardown удобна factory-fixture с учётом ресурсов.

Подробный разбор

Ответ с пояснениями

До запуска теста параметры передают fixture через indirect-параметризацию и request.param; для динамического создания и teardown удобна factory-fixture с учётом ресурсов.

Например, fixture может вернуть функцию create_user, которая создаёт пользователя и добавляет его ID в локальный список. После yield fixture удаляет все созданные ID. Тогда тест передаёт данные при вызове фабрики, а cleanup не зависит от успешного завершения assertions. Если значение известно заранее, используют @pytest.mark.parametrize(..., indirect=True). Нельзя передать обычную локальную переменную из уже выполняющегося теста назад в завершившийся setup без явно предусмотренного общего объекта или фабрики.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее