一、测试合集入口
1--分组
2--项目
3--接口
4--测试集合
二、添加测试集合
1、点击添加集合--输入合集名称及介绍,确定后生成空的测试合集
2、测试合集操作
鼠标选中测试合集,右侧四个按钮分别为克隆合集,导入接口,编辑合集,删除合集
2.1 克隆集合--会在当前测试集合列表复制一份所选测试集合
2.2导入接口--从已有接口中选择需要作为测试用例的接口并导入测试集合
勾选测试的接口并点击【确定】,所选择的接口即显示在测试集合中,然后可编辑接口测试用例
2.3 编辑集合--编辑用例集合名称及说明
2.4 删除集合--删除用例集合及其中用例
三、测试用例
1、编辑测试用例
如上图,编辑用例可以进行用例名称,用例执行环境,接口参数及请求数据的填充,编辑完成后点击保存,则用例保存成功
点击“发送”,可以以当前填写的请求数据对此接口进行请求。
2、测试用例断言
对用例执行结果进行断言,首先需要开启。
yapi提供快捷的断言方式,点击即可生成对应的断言。
- assert.equal(status, 200)--断言请求返回状态码为200
- assert.equal(body.code, 0)--断言返回数据中的code为0
- assert.notEqual(status, 404)--断言请求返回状态码不为404
- assert.notEqual(body.code, 40000)--断言返回数据中的code不为40000
- assert.deepEqual(body, {"code": 0})--断言返回数据 body 等于 {"code": 0}
- assert.notDeepEqual(body, {"code": 0})--断言返回数据 body 不等于 {"code": 0}
以上断言方式可以自行根据需要进行编辑和优化,基本可以满足我们日常测试所用。
3、接口参数或数据组装
3.1 固定参数
如果接口数据固定写死,只需要正常填写保存即可
3.2 全局变量
- 如果一个固定参数在多个接口都会用到,那么我们维护起来就需要一个个接口去进行修改,非常麻烦,这时我们可以使用全局变量。
- 在设置-环境配置中添加环境信息,包括环境名称,域名,接口公用的Header等。global中可以添加全局变量。
- 全局变量是属于某个环境的,所以使用全局变量时必须在对应的环境下。
全局变量的设置:
全局变量的引用:
{{global.变量名}}
3.3 接口参数传递
如果连续的测试场景,后面的接口需要用到前面接口请求的数据或者返回的数据,这种场景需要进行接口间的参数传递
Yapi接口传递格式:
$.{key}.{params|body}.{path}
- key为需要用到的前面一个用例的key值
- 如果使用上一个接口中请求参数中的数值,用params
- 如果使用上一个接口中响应返回中的数值,用body
- path为所需数据的节点
key
点击测试集合,展示的测试用例列表中,会展示key
params/body
通过接口请求或者抓包获取到请求数据和返回数据
path
对数据进行分析,找出自己所要的字段,通过层级关系获取到表达式
例:假设key为100返回的body
{
"code": 0,
"data": {
"orders": [
{
"deliver_at": 1640307600,
"id": 1414,
"operations": [
"forward_assign",
"operations"
],
"plate_number": "粤B881744",
"updated_at": 1625045576,
},
],
"updated_at": "2021-06-30 17:32:56"
},
"message": "ok"
}
假设我们想要获取到 "plate_number"的值,那么写法就为:$.100.body.data.orders[0].plate_number
层级关系用.表示,列表取对应数据用[n]下标指定。
可视化界面实现
yaip也提供了可视化的界面操作,实现接口参数传递
1、PATH PARAMETERS或者QUERY PARAMETERS
点击参数后面的编辑按钮,弹出高级参数设置弹框:
选中具体字段后生成表达式,点击插入即可填入
2、请求BODY
与PARAMETERS一样的操作,但是表达式必须要用双引号包裹起来
tips:
如果想要通过可视化的高级参数设置来进行参数传递,气体条件需要在接口中将完整的返回body导入,这样才能在高级参数中找到对应的字段
路径:接口-->编辑-->返回数据设置-->导入json--?保存
3.4 mock占位符
如果接口中我们需要动态生成一些随机参数数,可以使用mock占位符
操作与接口参数传递一致,唤起高级参数设置弹框后选择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格式的日期
占位符更多相关内容可参考: 《yapi中使用json-schema mock数据》.
四、自动化用例执行
用例执行有两种方式,一种是直接执行,另外一种是服务端执行,调试时可以用直接执行,如果需要集成或者需要生成测试报告,选择服务端执行
1、直接执行
用例编写完成后,点击测试集,右侧中点击【开始测试】即可运行所有测试用例:
路径如图所示
运行完成后通过的用例会有绿色标识,未通过的用例会有黄色或红色标识。
点击单个用例右侧的测试报告,会展示完整的执行请求,response以及断言结果
缺点:未生成直观全面的测试报告,适用于日常调试,yapi系统内部执行及查看
2、服务端执行
服务端执行,项目路径直接执行一致,只不过选择服务端测试即可
配置根据自己需要填写:
- 环境,选择需要执行的环境
- 输出格式,有html和json两种
- 消息通知,开启后,如测试不通过,会给项目组成员发送消息通知
-
下载数据,开启后,测试报告将被下载至本地
配置完成后生成url,在浏览器访问此url,就会后台执行所有用例,并自动打开测试报告,测试报告包含整体的用例执行情况,每个用例详细的请求和返回结果以及断言
3、通用规则配置
如果一个用例集合中每个用例的断言和接口请求状态码可以设置为一样时,我们可以在通用规则配置中整体设置
- 检查HttpCode,开启则会检查每个用例返回的HttpCode为200。
- 检查返回json,开启并设置返回的字段的校验,则会检查每个用例返回的body中对应的这个字段的值。
- 检查返回数据结构,开启时会校验返回的数据结构。
注:只有 response 基于 json-schema 方式定义,该检查才会生效 - 全局测试脚本,开启后和单独设置每个用例的断言效果一样。
注:在跑自动化测试时,优先调用全局脚本,只有全局脚本通过测试,才会开始跑case自定义的测试脚本