mock测试
Mock对象适用场景:
(1)需要将当前被测单元和其依赖模块独立开来,构造一个独立的测试环境,不关注被测单元的依赖对象,只关注被测单元的功能逻辑。
-----比如被测代码中需要依赖第三方接口返回值进行逻辑处理,可能因为网络或者其他环境因素,调用第三方经常会中断或者失败,
无法对被测单元进行测试,这个时候就可以使用mock技术来将被测单元和依赖模块独立开来,使得测试可以进行下去。
(2)被测单元依赖的模块尚未开发完成,而被测单元需要依赖模块的返回值进行后续处理。
1)前后端项目中,后端接口开发完成之前,接口联调;
2)依赖的上游项目的接口尚未开发完成,需要接口联调测试;
3)被测单元依赖的对象较难模拟或者构造比较复杂。
-----比如,支付宝支付的异常条件有很多,但是模拟这种异常条件很复杂或者无法模拟,
比如,查询聚划算的订单结果,无法在测试环境进行模拟。
Mock测试的优势:
(1) 团队可以并行工作
(2)开启TDD模式,即测试驱动开发
(3)可以模拟那些无法访问的资源(外网资源等)
(4)隔离系统
Mock测试方式:(相关工具或者脚本)
1. Mock Server-Moco
这是一个jar包,只要执行该jar包,指定配置文件,就可开启一个http服务器提供服务,并且修改配置文件后也无需重启服务,支持动态加载。我使用的是moco-runner-0.10.2-standalone.jar,运行方式如下:
```java -jar moco-runner-0.10.2-standalone.jar start -p 8080 -c XXX.json```
具体使用方法:
https://blog.csdn.net/shensky711/article/details/52770686
https://github.com/dreamhead/moco
moco不足:
Moco的使用很简单,配置也很方便,目前更是提供了http、rest、socket服务。但是也仅仅是能stub出接口,模拟出简单的场景。如果接收到请求后需要做一些处理,如需查询数据库、进行运算、或者一些复杂的操作,就无能为力了。
2. fiddler(Fiddler的 AutoResponder)
fiddler大家都很熟了,在windows环境可以随便自定义返回内容,但一个很大的缺点是,它不跨平台,
而我们平时的很多场景下,是需要在Linux下进行mock的。
3、还有一些其他mock工具,大多都是通过编写js代码或者python、java等代码来达到mock目的
也可以通过编写C#来返回请求(根据会的C#远程接口工具)
4、Apifox-超强接口管理神器
Apifox 是 API 文档、调试、Mock、测试一体化协作平台,定位Postman + Swagger + Mock + JMeter
。通过一套系统、一份数据,解决多个系统之间的数据同步问题。只要定义好 API 文档,API 调试、API 数据 Mock、API 自动化测试就可以直接使用,无需再次定义;API 文档和 API 开发调试使用同一个工具,API 调试完成后即可保证和 API 文档定义完全一致。高效、及时、准确!
https://www.cnblogs.com/fnng/p/13401229.html
https://www.apifox.cn/
Apifox支持 windows/macOS/linux