一、什么是mock?
Mock是一种根据约定规则进行数据模拟的技术,通过mock我们可以在不修改既有代码的情况下,拦截ajax请求,返回模拟的响应数据。
总结起来mock有以下优点:
让前端工程师独立于后端进行开发;
通过随机数据,模拟各种场景,增加单元测试的真实性;
开发无侵入;
用法简单,符合直觉的接口;
测试人员可以通过mock,在接口提测前完成用例的编写。
测试可以模拟很多不好模拟的场景,例如各种支付场景,不好模拟真实数据的时候。
二、mock的使用
普通mock
有两种方式:mockjs和json-schema。
1)mokjs
json-schema
开启返回数据设置json-schema
mock数据
@natural(10000,99999):生成10000至99999之间的自然数
@character("upper"):生成一个大写字符
@character("Hello@1"):生成"Hello@1"中的一个字符
@string("lower",3,5):生成3-5个小写字符
@string("qazwsxedc",3,5):生成3-5个属于指定字符串"qazwsxedc"的字符
@date(yy-MM-dd):生成一个满足 yy-MM-dd格式的日期
mock期望
根据不同的入参场景来测试返回不同的期望已达到测试效果。
点击添加期望
期望名称-根据自己不同测试的场景设置名称以便于区分场景
ip过滤-如果添加ip,只有使用此ip访问mock接口,才能返回期望的响应数据
参数过滤-添加了参数,访问此mock接口,URL参数中必须有deviceID并且满足参数值,才能返回期望的响应数据,如果有多个参数,必须同时满足才能返回期望响应的数据。
HTTP Code-http请求响应状态码。
延时-给响应加延时,可以用来模拟接口响应慢或超时的情况。
HTTP头-添加任意符合http协议规范的响应头。
Body- 返回数据,可以是html.ison等等任意字串。可以使用mockis模板和占位符语法 。
必须点击开启
执行
自定义脚本
高级Mock-脚本:
函数:
var test_arr = [] --定义数组
if(params.Param1 === ''){ } --判断是否为空
if(params.Param1 == 'daily'){ } --判断是否等于某值
if(test_arr.includes(params.Param1)=== false){ } --判断是否是数组中的元素
Random.integer(60, 100) -- 同 @integer(60, 100)
Random.string('lower', 1, 3) -- 同 @string("lower", 1, 3)
Random.lower('HELLO') -- 字母转小写
Random.csentence() --随机中文句子
Random.email('qq.com') --随机生成邮箱
Random.datetime('yyyy-MM-dd A HH:mm:ss') -- 同 @datetime("yyyy-MM-dd A HH:mm:ss")
Random.pick(['Success', 'Failed', 'Unsettled']) -- 同 @pick(['Success', 'Failed', 'Unsettled'])
使用示例:
Mock脚本:
var msgarr=['Success', 'Failed', 'Unsettled']
if(Random.lower(params.appId) == Random.lower('aaaaaa'))
{
mockJson={ accesstoken:"", errorCode: "参数错误", msg:'failed' }
}
else
{
mockJson={ accesstoken:Random.string(12), errorCode: Random.integer(300001, 300009), msg: Random.pick(msgarr) }
}
注意:请求 Mock 数据时,规则匹配优先级:Mock 期望 > 自定义 Mock 脚本 > 项目全局 mock 脚本 > 普通 Mock。如果前面匹配到 Mock 数据,后面 Mock 则不返回。
三、自动化测试
添加测试用例集
导入接口
3.关联引用之前的请求参数或者返回参数
{{ $.93.body.data.lineList[0].deviceId }}
4.请求断言
基本的断言语句
如果一个用例集合中每个用例的断言和接口请求状态码可以设置为一样时,也可以设置通用的规则
全局测试脚本,开启后和单独设置每个用例的断言效果一样。
注:在跑自动化测试时,优先调用全局脚本,只有全局脚本通过测试,才会开始跑case自定义的测试脚本
5.直接执行-点击开始执行,点击可以查看报告
运行完成后通过的用例会有绿色标识,未通过的用例会有黄色或红色标识。
点击单个用例右侧的测试报告,会展示完整的执行请求,response以及断言结果