利用 pytest-mock 举行 Python 高级单元测试与模拟

打印 上一主题 下一主题

主题 872|帖子 872|积分 2616

<hr> 一、单元测试与模拟的意义

在软件开发中,单元测试用于验证代码逻辑的正确性。但实际项目中,代码常依靠外部服务(如数据库、API、文件系统)。直接测试这些依靠会导致:

  • 测试速度变慢
  • 测试效果不可控
  • 产生副作用(如真实发送邮件)
模拟(Mocking) 技术通过创建假造对象替代真实依靠,使测试聚焦于当前单元的逻辑。
<hr> 二、环境安装

利用 pytest 和 pytest-mock 插件:
  1. pip install pytest pytest-mock
复制代码
<hr> 三、底子用法示例

场景:邮件发送服务

假设我们有一个邮件发送类 EmailSender:
  1. # email_sender.py
  2. class EmailSender:
  3.     def send(self, to, subject, body):
  4.         # 真实发送邮件的逻辑
  5.         return True
复制代码
测试时不应实际发送邮件。利用 pytest-mock 模拟 send 方法:
  1. # test_email_sender.py
  2. def test_send_email(mocker):
  3.     mock_send = mocker.patch("email_sender.EmailSender.send")
  4.     sender = EmailSender()
  5.    
  6.     result = sender.send("user@example.com", "Hello", "Test email")
  7.    
  8.     mock_send.assert_called_once_with("user@example.com", "Hell
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

知者何南

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表