Ответ
Да, 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.