用python做mock测试

本文深入探讨了Python中Mock测试的概念及其应用场景,特别是在接口未共用同一库、第三方服务故障诊断及前后端独立开发时的作用。通过具体实例,演示了如何使用unittest.mock模块模拟请求并验证其调用情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mock的概念

Mock通常是指,在测试一个对象A时,我们构造一些假的对象来模拟与A之间的交互,而这些Mock对象的行为是我们事先设定且符合预期。通过这些Mock对象来测试A在正常逻辑,异常逻辑或压力情况下工作是否正常。

那么什么时候需要做mock呢?
1.当接口没有使用同一个库的时候
2.当调用的第三方服务出现问题,但是又没有准确的证据证明是第三方服务问题时,可以通过模拟第三方正常时,单独调用我方接口来确定到底是哪一方出现问题
3.前端开发人员在做自测时需要依赖后端接口,但是后端又没有开发完时,可以根据事先定义好的规范进行mock测试

在java中,可以使用Mockito做mock测试;在python中则是用unittest框架里面的mock来实现mock测试

mock官方文档

https://docs.python.org/zh-cn/3/library/unittest.mock.html

mock实例

模拟调用百度接口返回500的情况

import requests
from unittest import mock

def request_baidu():
    resp = requests.get('http://www.baidu.com')
    return resp.status_code

# 模拟调用request_baidu,且返回值是500
request_baidu = mock.Mock(return_value=500)
print(request_baidu())
print(request_baidu.called)#打印是否被调用
print(request_baidu.call_count)#打印调用次数

总结

1.为什么request_baidu后面没有加() ?
模拟调用,实际并未调用
2.查看mock对象是否被调用时使用called方法
3.查看mock对象调用次数时使用call_count)方法
4.Mock常用的参数有return_value和side_effect
return_value和side_effect的区别在于side_effect可以用来抛出异常或者动态改变属性值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值