Вопрос проверяет умение тестировать код, зависящий от внешних систем, без реальных сетевых вызовов.
В таких случаях используют моки и стабы HTTP-ответов. Запросы к внешнему API подменяются заранее заданными ответами. Это делает тесты быстрыми и детерминированными. Реальный API используется только для ручных или контрактных проверок.
Тестирование клиента внешнего API — это проверка логики обработки ответов сервиса без зависимости от его доступности и поведения.
Чаще всего:
Перехватывают HTTP-запрос
Возвращают заранее подготовленный ответ
Проверяют поведение клиента
Пример идеи:
def test_client_handles_404(api_client, http_mock):
http_mock.get("/user/42", status=404)
result = api_client.get_user(42)
assert result is None
Важно проверять:
корректную обработку статусов
парсинг ответа
ошибки и ретраи
таймауты
Основные причины:
Нестабильность
Ограничения по rate limit
Отсутствие тестовых данных
Высокая стоимость ошибок
Иногда применяют:
contract-тесты
фикстуры с JSON-ответами
запись реальных ответов (snapshot-подход)
При отсутствии тестового окружения внешний API всегда изолируют через моки, проверяя только логику клиента и обработку сценариев.