В чём разница между mock и magic mock в тестировании
Python
Senior
Без компании
В чём разница между mock и magic mock в тестировании
Ответы
`Mock` и `MagicMock` — это инструменты из модуля `unittest.mock` для создания заглушек в тестах.
- **Mock** — базовая заглушка, которая заменяет объект и позволяет проверять вызовы методов. Не поддерживает магические методы (например, `__len__`, `__iter__`).
```
from unittest.mock import Mock
mock = Mock()
mock.some_method() # Работает
len(mock) # TypeError: object of type 'Mock' has no len()
```
- **MagicMock** — наследник `Mock`, автоматически поддерживает магические методы.
```
from unittest.mock import MagicMock
magic_mock = MagicMock()
magic_mock.__len__.return_value = 5 # Можно задать поведение
len(magic_mock) # 5
```
**Когда использовать:**
- `Mock` — если не нужны магические методы.
- `MagicMock` — если требуется эмуляция контейнеров, строк или других объектов с перегрузкой операторов.