Для чего нужны pytest fixtures и какие бывают scopes
Интервьюер спрашивает про pytest fixtures: зачем они нужны и какие scopes у них бывают?
Короткий ответ
Fixture переиспользует setup/teardown логику в тестах: подготовить данные, клиент, БД, mock или конфиг. Scopes: function, class, module, package, session.
Полный разбор
Fixture в pytest — это способ вынести повторяемую подготовку теста в отдельную функцию. Например, создать тестового пользователя, поднять соединение с БД, подготовить client, замокать внешний сервис или очистить состояние после теста.
Scope определяет, как часто fixture создается. function — на каждый тест, class — на класс, module — на файл, package — на пакет, session — один раз на весь запуск. Чем шире scope, тем быстрее может быть тестовый прогон, но тем выше риск shared state и зависимостей между тестами.
Хороший ответ: fixtures улучшают читаемость тестов, убирают duplication, позволяют управлять teardown через yield, а scope нужно выбирать по стоимости setup и риску загрязнения состояния.
Теория
Это базовый Python/backend вопрос: проверяется не ML, а умение писать поддерживаемые тесты вокруг ML-сервисов, пайплайнов и API.
Типичные ошибки
- Сказать только "это мок".
- Не назвать scopes.
- Выбирать session scope для mutable state без изоляции.
Как отвечать на собеседовании
- Приведи пример: db_client или prepared_dataframe.
- Отдельно скажи про trade-off speed vs isolation.