Dùng mocker fixture từ pytest-mock để mock functions và verify calls.
python
async def test_register_sends_email(mocker):
# Mock email service
mock_send = mocker.patch(
"app.services.email_service.send",
new_callable=AsyncMock
)
mock_send.return_value = True
await register_user(email="test@test.com")
mock_send.assert_called_once_with(
"test@test.com", "Welcome!"
)
def test_with_side_effect(mocker):
mock_api = mocker.patch("app.services.external_api.call")
mock_api.side_effect = [{"status": "ok"}, ConnectionError()]
assert call_api() == {"status": "ok"}
with pytest.raises(ConnectionError):
call_api()python
def test_service(mocker):
mock_db = mocker.patch("app.services.get_user")
mock_db.return_value = {"id": 1, "name": "Alice"}
result = user_service.get_profile(user_id=1)
assert result["name"] == "Alice"
mock_db.assert_called_once_with(1)