<hr> 一、单元测试与模拟的意义
在软件开发中,单元测试用于验证代码逻辑的正确性。但实际项目中,代码常依靠外部服务(如数据库、API、文件系统)。直接测试这些依靠会导致:
- 测试速度变慢
- 测试效果不可控
- 产生副作用(如真实发送邮件)
模拟(Mocking) 技术通过创建假造对象替代真实依靠,使测试聚焦于当前单元的逻辑。
<hr> 二、环境安装
利用 pytest 和 pytest-mock 插件:
- pip install pytest pytest-mock
复制代码 <hr> 三、底子用法示例
场景:邮件发送服务
假设我们有一个邮件发送类 EmailSender:
- # email_sender.py
- class EmailSender:
- def send(self, to, subject, body):
- # 真实发送邮件的逻辑
- return True
复制代码 测试时不应实际发送邮件。利用 pytest-mock 模拟 send 方法:
- # test_email_sender.py
- def test_send_email(mocker):
- mock_send = mocker.patch("email_sender.EmailSender.send")
- sender = EmailSender()
-
- result = sender.send("user@example.com", "Hello", "Test email")
-
- mock_send.assert_called_once_with("user@example.com", "Hell
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |