学习python自动化——mock
一、mock作用
1、解决项目依赖
2、对外接口调试(第三方公司)
3、模拟业务接口
二、mock导入
python3.0以上版本将mock集成到了unittest
from unittest import mock
三、参数
1、return_value:模拟参数,返回字典
def test01(): #功能没有实现
#返回字典给我
pass
test01=mock.Mock(return_value={"name":"老王"}) #模拟功能返回的参数给我
print(test01()) #返回:{'name': '老王'}
2、side_effect:函数有参数时,调用函数等于调用实际函数,没有做mock,return_value失效
def test01():
#返回字典给我
pass
test01=mock.Mock(return_value={"name":"老王"},side_effect=test01)
print(test01()) #返回:None,因为test01没有任何参数,return_value的参数失效
三、使用场景
- 接口未实现,按照接口文档进行模拟函数返回
from unittest import mock
def test01():
#返回字典给我
pass
test01=mock.Mock(return_value={"name":"老王"},side_effect=test01)
print(test01()) #返回:None
- 根据不同传参返回不同的值
from unittest import mock
def test01():
pass
def test02(data):
mock_data={
"test01":"支付成功",
"test02": "支付失败",
"test03": "参数错误",
"test04": "余额不足",
}
return mock_data[data]
test01=mock.Mock(side_effect = test02)
print(test01("test03")) #返回:参数错误
- 使用@patch.object()装饰器实现
import mocktest012 #创建一个mocktest012.py文件,test_demo函数未实现
from unittest.mock import patch
@patch.object(target=mocktest012,attribute="test_demo")
def test01(mock_fun):
mock_fun.return_value={"name":"老王"}
result=mocktest012.test_demo()
print(result)
test01() #返回:{'name': '老王'}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!