Как проверить, что код правильно взаимодействует с внешним сервисом
Python
Middle
Без компании
Как проверить, что код правильно взаимодействует с внешним сервисом
Ответы
Для проверки взаимодействия с внешним сервисом используйте **моки** (mock-объекты) и **стабы** в тестах. Библиотека `unittest.mock` позволяет подменять реальные вызовы на тестовые заглушки.
Пример:
```
from unittest.mock import patch
import requests
def fetch_data():
response = requests.get('https://api.example.com/data')
return response.json()
# Тест с моком
@patch('requests.get')
def test_fetch_data(mock_get):
mock_get.return_value.json.return_value = {'key': 'value'}
result = fetch_data()
assert result == {'key': 'value'}
mock_get.assert_called_once_with('https://api.example.com/data')
```
**Ключевые моменты:**
- Используйте `patch` для подмены HTTP-запросов.
- Проверяйте, что мок вызывается с правильными аргументами (`assert_called_with`).
- Тестируйте обработку ошибок (например, `requests.Timeout`).
- Для интеграционных тестов можно поднимать тестовый сервер (например, `pytest-httpserver`).