Вопрос проверяет понимание тестирования взаимодействия нескольких компонентов системы и отличий от unit-тестов.
Интеграционные тесты проверяют, как разные части системы работают вместе. В отличие от unit-тестов, здесь используются реальные зависимости, такие как база данных или внешние сервисы. Такие тесты выполняются медленнее. Они помогают выявить ошибки на стыке компонентов. Интеграционные тесты дополняют unit-тесты, но не заменяют их.
Интеграционные тесты нужны для проверки того, что отдельные части системы корректно взаимодействуют между собой в реальных условиях.
Интеграционные тесты — это автоматические тесты, которые проверяют совместную работу нескольких компонентов системы.
Unit-тесты:
проверяют одну функцию или класс
используют моки и заглушки
работают быстро
Интеграционные тесты:
проверяют связку компонентов
используют реальные зависимости
выполняются медленнее
Чаще всего интеграционные тесты включают:
работу с базой данных
HTTP-запросы между сервисами
взаимодействие с очередями
сериализацию и десериализацию данных
def test_create_user(client, db):
response = client.post("/users", json={"name": "Alice"})
assert response.status_code == 201
user = db.get_user_by_name("Alice")
assert user is not None
В этом примере:
используется реальный HTTP-слой
данные реально сохраняются в БД
проверяется полный сценарий
Они полезны, когда:
есть сложные взаимодействия между компонентами
используется внешняя инфраструктура
важно проверить реальные конфигурации
Интеграционные тесты помогают обнаружить ошибки, которые невозможно поймать unit-тестами, и являются важной частью надежной тестовой стратегии.