Mock测试
介绍:简单的说,Mock测试就是对某些难以构造或难以获取的场景,使用虚拟的对象进行替换的过程。
作用:4个好处
- 能够解除测试对象对外部服务的依赖,使得测试用例可以独立运行(比如数据库、第三方接口等)
- 能够替换外部服务调用或一些速度较慢的操作,提升测试用例的运行速度
- 能够模拟异常的场景
- 一些异常的逻辑往往在正常测试中是很难触发的,通过Mock可以人为的控制触发异常逻辑
- 服务端功能还未开发完,但是接口规则已经确定,可以通过Mock模拟服务端接口返回符合规则的数据,提前完成测试脚本的编写
Mock的实现方式:
- 白盒:编写代码来替换要mock的接口或者返回数据
- 黑盒:设计一个mock服务器
- 例如:mock可以模拟请求和响应数据,从而做到代替后端接口返回数据的场景测试,提升测试效率,提高前端开发效率
- 还有很多其他的mock服务器,比如mock验证码服务器(开发搭建)
Python中的Mock:
-
Mock是Python中一个用于模拟测试的库,它的主要功能是使用mock对象替代掉指定的Python对象,以达到模拟对象的行为。
-
从Python 3.3开始,mock模块已经被合并到标准库中,被命名为 unittest.mock ,可以直接使用:
from unittest import mock
案例一:
import time
def add(x, y):
time.sleep(1000)
return x + y
import unittest
from unittest import mock
class TestAdd(unittest.TestCase):
def test01(self):
# 由于加法函数出现问题,需要加载1000秒才能运行完毕,此时,为了加快测试效率,我们使用mock来替换加法函数
add2 = mock.Mock(return_value={
"success":"true","code":10000})
print("add2", add2)
# 调用自己mock的加法函数
result = add2(1,2)
print("result=", result)
# 断言返回结果
self.assertEqual(3, result)
案例二:
设计案例的支付场景测试用例
1,用户余额为3000时,查看是