Python mock与单元测试隔离
unittest.mock替换真实依赖。Mock/MagicMock对象。patch装饰器/上下文。side_effect异常/多返回值。return_value预设返回。call_count检查调用次数。assert_called_with断言参数。spec限定接口。autospec自动匹配签名。from unittest.mock import Mock, patch, MagicMockclass ExternalAPI:def fetch(self):return real dataclass Processor:def __init__(self, api):self.api apidef process(self):data self.api.fetch()return data.upper()def test_processor():mock_api Mock()mock_api.fetch.return_value mock dataprocessor Processor(mock_api)result processor.process()assert result MOCK DATAmock_api.fetch.assert_called_once()# patch装饰器patch(module.ExternalAPI.fetch)def test_patch(mock_fetch):mock_fetch.return_value patchedapi ExternalAPI()assert api.fetch() patched# side_effectmock Mock()mock.side_effect [1, 2, ValueError(error)]print(mock()) # 1print(mock()) # 2mock() # 抛出ValueError