Вопрос проверяет знание различных уровней тестирования в разработке.
Основные типы: модульные (тестируют отдельные функции), интеграционные (проверяют взаимодействие компонентов), системные (тестируют всю систему) и E2E (проверяют полный сценарий). Модульные — быстрые и простые, E2E — сложные, но ближе к реальному использованию.
Модульные (Unit)
Тестируют отдельные функции/классы:
def test_add():
assert add(2, 2) == 4Интеграционные
Проверяют взаимодействие компонентов:
def test_db_integration():
user = User.create(name="Test")
assert User.get(user.id).name == "Test"E2E (End-to-End)
Тестируют полный сценарий (например, через API):
def test_api_flow():
client.post("/register", json={"name": "Test"})
response = client.get("/users/1")
assert response.json()["name"] == "Test"Когда использовать:
Unit: для всей бизнес-логики
Integration: для работы с БД, внешними сервисами
E2E: для ключевых пользовательских сценариев