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

Структура проекта на pytest

Вопрос

Как устроить проект API-автотестов на pytest для микросервисной системы на 15 сервисов?

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

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

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

Коротко

Образцовый ответ: «Корень проекта: пакет клиентов, по клиенту на сервис, общий HTTP-слой с логированием в Allure. Папки тестов по сервисам.

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

  • Структура по сервисам или доменам, общий слой клиентов

  • conftest по уровням: корень для конфигурации и клиентов, ниже фабрики данных

  • Конфиг окружений через переменные и опции командной строки (pytest_addoption)

  • Маркеры для смоука, регресса, сервисов, владельцев, strict-markers

  • Параллельность через xdist и изоляция данных

  • Отчёт Allure, логирование запросов и ответов во вложения

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

  • Как переключать окружения?
  • Где хранить секреты?
  • Как сделать, чтобы тесты одного сервиса запускались в его пайплайне?

Разбор

Образцовый ответ: «Корень проекта: пакет клиентов, по клиенту на сервис, общий HTTP-слой с логированием в Allure. Папки тестов по сервисам. Корневой conftest регистрирует опцию --env через pytest_addoption, читает конфиг окружения и секреты из переменных и отдаёт session-фикстуры клиентов. В папках сервисов свои conftest с фабриками данных. Маркеры: smoke, regress, имя сервиса, команда; включён --strict-markers. Каждый тест создаёт свои данные, поэтому прогон идёт через -n auto. Пайплайн сервиса запускает pytest -m orders, ночной прогон весь регресс»).

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

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

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