Работали ли вы с Pytest?

«Работали ли вы с Pytest?» — вопрос из категории Фреймворки тестирования, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, Pytest — мой основной фреймворк для написания автотестов на Python. Я использовал его для unit-тестов, API-тестирования (с библиотекой requests) и интеграции с UI-фреймворками, такими как Selenium.

Пример организации тестов API:

import pytest
import requests

# Использование фикстур для подготовки тестового окружения
@pytest.fixture
def api_client():
    base_url = "https://api.example.com"
    session = requests.Session()
    session.headers.update({"Authorization": "Bearer token123"})
    yield session
    session.close()

# Параметризация для проверки разных входных данных
@pytest.mark.parametrize("user_id, expected_status", [(1, 200), (999, 404)])
def test_get_user_status(api_client, user_id, expected_status):
    response = api_client.get(f"/users/{user_id}")
    assert response.status_code == expected_status

# Использование маркировки для категоризации тестов
@pytest.mark.smoke
def test_health_check(api_client):
    response = api_client.get("/health")
    assert response.status_code == 200
    assert response.json()["status"] == "OK"

Ключевые преимущества в работе:

  • Фикстуры (@pytest.fixture): Позволяют создавать переиспользуемые setup/teardown логики (например, запуск браузера, подготовку БД, создание тестовых пользователей).
  • Богатая экосистема плагинов: Использовал pytest-xdist для параллельного запуска, pytest-html для генерации отчётов и pytest-allure для создания детализированных Allure-отчётов.
  • Читаемые ассерты: Не нужно запоминать специальные методы, можно использовать стандартный assert.