К тренажеру
ВопросEasypython-backendРеальный собес

Для чего нужны 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.