> Что такое mock и для чего он используется (Python)
Уровень: junior · Роль: backend · Язык: Python · Категория: Технические вопросы
Компании: JetLend
Стек: Python
> Пример ответа
Mock (от англ. "подделка") - это объект-заглушка, который имитирует поведение реального компонента (например, базы данных, внешнего API или сервиса) в тестах. В Python для создания моков чаще всего используется библиотека unittest.mock.
Основная цель mock - изолировать тестируемый код от внешних зависимостей. Это позволяет:
- Тестировать логику без реальных вызовов: например, при тестировании функции, отправляющей email, mock заменяет SMTP-сервер, проверяя только, что метод
sendбыл вызван с правильными аргументами. - Контролировать возвращаемые значения: можно задать, что mock возвращает при вызове, чтобы протестировать разные сценарии (успех, ошибка, граничные случаи).
- Ускорять тесты: реальные запросы к БД или API могут быть медленными, а mock работает мгновенно.
- Проверять взаимодействие: с помощью
assert_called_withилиcall_countможно убедиться, что методы вызывались нужное число раз и с правильными параметрами.
Пример на Python:
PYTHONfrom unittest.mock import Mock# Создаем mock для внешнего сервисаexternal_service = Mock()external_service.get_data.return_value = {"key": "value"}# Тестируем функцию, которая использует этот сервисdef process_data(service):data = service.get_data()return data["key"]result = process_data(external_service)assert result == "value"external_service.get_data.assert_called_once()
Mock не заменяет интеграционные тесты, но критически важен для юнит-тестов, где нужно проверить логику кода в изоляции.
> Похожие задачи по Python
Какова сложность поиска и добавления в коллекциях list, set, dict в Python?
Что произойдет при изменении второго элемента списка b, если b = a
Что такое duck typing и динамическая типизация в Python
Что такое синхронность, многопоточность и многопроцессорность
> Похожие задачи по backend
Какова сложность поиска и добавления в коллекциях list, set, dict в Python?
Что произойдет при изменении второго элемента списка b, если b = a
Что такое duck typing и динамическая типизация в Python
Что такое синхронность, многопоточность и многопроцессорность
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью