Что такое Mock в тестировании
Python
Middle
Без компании
Что такое Mock в тестировании
Ответы
Mock (или mock-объект) — это специальный объект, имитирующий поведение реального объекта в тестах. Он используется для замены зависимостей, чтобы изолировать тестируемый код и контролировать его окружение.
**Основные цели Mock:**
- Замена сложных или медленных зависимостей (например, API, БД)
- Проверка вызовов методов с нужными аргументами
- Контроль возвращаемых значений или исключений
**Пример с `unittest.mock`:**
```
from unittest.mock import Mock
# Создаем mock-объект
mock_db = Mock()
# Задаем возвращаемое значение
mock_db.get_user.return_value = {"id": 1, "name": "Alice"}
# Имитируем вызов метода
user = mock_db.get_user(1)
print(user) # {'id': 1, 'name': 'Alice'}
# Проверяем, был ли вызван метод
mock_db.get_user.assert_called_once_with(1)
```
**Когда использовать:**
- Для unit-тестов, чтобы избежать побочных эффектов
- Для тестирования взаимодействия между компонентами
- Для симуляции ошибок (например, `mock_db.get_user.side_effect = Exception("DB error")`)
Mock часто путают с `stub` или `spy`, но он дает больше возможностей для проверки поведения.