Mocking with unittest.mock
Isolate units under test by mocking dependencies.
Why Mock?
Mocks replace real dependencies (databases, APIs, file system) with controllable fakes so tests run fast, deterministically, and in isolation.
from unittest.mock import Mock
api = Mock()
api.get_user.return_value = {"id": 1, "name": "Alice"}
result = api.get_user(1)
print(result) # {'id': 1, 'name': 'Alice'}Mock and MagicMock
Mock is the base class. MagicMock auto-configures magic/dunder methods so it can be used as iterators, context managers, etc.
from unittest.mock import MagicMock
m = MagicMock()
m.__len__.return_value = 5
print(len(m)) # 5
m.__iter__.return_value = iter([1, 2, 3])
for x in m:
print(x)All lessons in this course
- Writing Your First pytest Tests
- Fixtures and Setup/Teardown
- Parametrize and Test Coverage
- Mocking with unittest.mock