В чём разница между 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` — если требуется эмуляция контейнеров, строк или других объектов с перегрузкой операторов.