yapi平台--接口自动化实施

一、测试合集入口

1--分组
2--项目
3--接口
4--测试集合


image.png

二、添加测试集合

1、点击添加集合--输入合集名称及介绍,确定后生成空的测试合集

image.png

2、测试合集操作

鼠标选中测试合集,右侧四个按钮分别为克隆合集,导入接口,编辑合集,删除合集


image.png

2.1 克隆集合--会在当前测试集合列表复制一份所选测试集合

2.2导入接口--从已有接口中选择需要作为测试用例的接口并导入测试集合

image.png

勾选测试的接口并点击【确定】,所选择的接口即显示在测试集合中,然后可编辑接口测试用例

2.3 编辑集合--编辑用例集合名称及说明

2.4 删除集合--删除用例集合及其中用例

三、测试用例

1、编辑测试用例

image.png

如上图,编辑用例可以进行用例名称,用例执行环境,接口参数及请求数据的填充,编辑完成后点击保存,则用例保存成功

点击“发送”,可以以当前填写的请求数据对此接口进行请求。

2、测试用例断言

image.png

对用例执行结果进行断言,首先需要开启。
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 固定参数

如果接口数据固定写死,只需要正常填写保存即可


image.png

3.2 全局变量

  • 如果一个固定参数在多个接口都会用到,那么我们维护起来就需要一个个接口去进行修改,非常麻烦,这时我们可以使用全局变量。
  • 在设置-环境配置中添加环境信息,包括环境名称,域名,接口公用的Header等。global中可以添加全局变量。
  • 全局变量是属于某个环境的,所以使用全局变量时必须在对应的环境下。
全局变量的设置:
image.png
全局变量的引用:

{{global.变量名}}


image.png

3.3 接口参数传递

如果连续的测试场景,后面的接口需要用到前面接口请求的数据或者返回的数据,这种场景需要进行接口间的参数传递
Yapi接口传递格式:

$.{key}.{params|body}.{path}
  1. key为需要用到的前面一个用例的key值
  2. 如果使用上一个接口中请求参数中的数值,用params
  3. 如果使用上一个接口中响应返回中的数值,用body
  4. path为所需数据的节点
key

点击测试集合,展示的测试用例列表中,会展示key


image.png
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
点击参数后面的编辑按钮,弹出高级参数设置弹框:
选中具体字段后生成表达式,点击插入即可填入


image.png

2、请求BODY
与PARAMETERS一样的操作,但是表达式必须要用双引号包裹起来


image.png

tips:
如果想要通过可视化的高级参数设置来进行参数传递,气体条件需要在接口中将完整的返回body导入,这样才能在高级参数中找到对应的字段
路径:接口-->编辑-->返回数据设置-->导入json--?保存

3.4 mock占位符

如果接口中我们需要动态生成一些随机参数数,可以使用mock占位符
操作与接口参数传递一致,唤起高级参数设置弹框后选择mock数据


image.png

常用占位符:

  • @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、直接执行

用例编写完成后,点击测试集,右侧中点击【开始测试】即可运行所有测试用例:
路径如图所示


image.png

运行完成后通过的用例会有绿色标识,未通过的用例会有黄色或红色标识。
点击单个用例右侧的测试报告,会展示完整的执行请求,response以及断言结果


image.png

缺点:未生成直观全面的测试报告,适用于日常调试,yapi系统内部执行及查看

2、服务端执行

服务端执行,项目路径直接执行一致,只不过选择服务端测试即可


image.png
image.png

配置根据自己需要填写:

  • 环境,选择需要执行的环境
  • 输出格式,有html和json两种
  • 消息通知,开启后,如测试不通过,会给项目组成员发送消息通知
  • 下载数据,开启后,测试报告将被下载至本地
    配置完成后生成url,在浏览器访问此url,就会后台执行所有用例,并自动打开测试报告,测试报告包含整体的用例执行情况,每个用例详细的请求和返回结果以及断言


    image.png

3、通用规则配置

如果一个用例集合中每个用例的断言和接口请求状态码可以设置为一样时,我们可以在通用规则配置中整体设置


image.png
  1. 检查HttpCode,开启则会检查每个用例返回的HttpCode为200。
  2. 检查返回json,开启并设置返回的字段的校验,则会检查每个用例返回的body中对应的这个字段的值。
  3. 检查返回数据结构,开启时会校验返回的数据结构。
    注:只有 response 基于 json-schema 方式定义,该检查才会生效
  4. 全局测试脚本,开启后和单独设置每个用例的断言效果一样。
    注:在跑自动化测试时,优先调用全局脚本,只有全局脚本通过测试,才会开始跑case自定义的测试脚本
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容