Фикстуры в Pytest выходят далеко за рамки классических
setup и teardown. Это мощный инструмент управления состоянием и ресурсами. Но при неправильном использовании они могут затянуть прогон тестов на десятки лишних минут.3 приёма грамотной архитектуры фикстур:
▫️ 1. Безупречный Teardown через yield
Забудьте про конструкции try-finally внутри тела тестов. Всё, что идёт после
yield в фикстуре, выполнится гарантированно, даже если тест упал с ошибкой:@pytest.fixture
def temp_user(api_client):
user = api_client.create_user()
yield user
api_client.delete_user(user.id)▫️ 2. Оптимизация тяжёлых клиентов через scope='session'
Создание HTTP-сессии Requests или подключение к базе данных не нужно делать на каждый тест. Передавай
scope="session": сессия инициализируется ровно 1 раз на весь прогон и переиспользует TCP-соединения (Keep-Alive).▫️ 3. Осторожное использование autouse=True
Автоматические фикстуры удобны для сброса моков или логирования шагов, но никогда не привязывай к
autouse тяжёлые операции с браузером или сетью, если они нужны только части сьюта.Такие архитектурные тонкости — фундамент для перехода на современный скоростной стек pytest-playwright. 24 ноября в QA.GURU стартует 1-й поток курса «Python Advanced + Playwright»: соединяем мощь Pytest с асинхронным движком Playwright, параллелизацией pytest-xdist и Trace Viewer.
📌 Посмотреть программу 1-го потока Python Advanced + Playwright
Консультации по программе у кураторов: @qa_guru_sales1.
Как организованы фикстуры в твоём проекте? Ставь 🔥, если выжимаешь максимум из scope='session', и 🦄, если только переходишь на Pytest!