测试高手进阶之路:接口测试用好“变量”,重复验证也不怕

开发 前端
在API的测试中,有时候需求是对整个文件进行检验而不是某个特定的值,或者说要对某个特定的值在不同的用例中重复地进行验证。

 应用场景

在API的测试中,有时候需求是对整个文件进行检验而不是某个特定的值,或者说要对某个特定的值在不同的用例中重复地进行验证。这种状况下,我们最喜欢用的就是变量。可以存取外部数据或定义内部变量,使代码变得简洁、又有可阅读性,同时测试用例结果运行也能保持一致性。

学习要点

·如何读取外部文件并进行文件内容的精确对比

·如何读取外部文件并进行文件内容的模糊对比

·使用变量验证某个特定的value是否出现

·使用变量验证某个特定的key是否出现

示例中get url: https://reqres.in/api/users/2

准备工作

如果您想跟着以下示例操作,需要做好以下配置:

·测试框架: Java + Karate + Junit 5

·语言: Java, Cucumber

·IDE: Intellij IDEA

·项目类型: Maven

创建测试场景

1.创建feature文件: testvar-use.feature

测试高手进阶之路:接口测试用好“变量”,重复验证也不怕

2.创建用例

用例一:读取外部文件并进行文件内容的精确对比

如下图中测试场景:用例中发送了一个get的请求以后,期待回应的代码是200,并列出相应的结果。代码And match response == compareResponse 检验返回的结果与期待的结果是否一致 。在Background中代码:* def compareResponse = read('classpath:src/test/resource/comparedContent.json') 定义了变量compareResponse 是读取的文件comparedContent.json的内容。(注:* 符号实际上可以换作 Given, 读取文件的路径: classpath)

测试高手进阶之路:接口测试用好“变量”,重复验证也不怕

如下图所示:comparedContent.json 内容是与 get请求返回的结果一致的。(注: json文件内容格式一定要正确,否则会出现读取文件错误的信息,参看常见错误)

测试高手进阶之路:接口测试用好“变量”,重复验证也不怕

用例二:读取外部文件并进行文件内容的模糊对比

代码And match response == compareResponseIgnoreValue检验返回的结果与期待的结果是否一致 。在Background中定义变量compareResponseIgnoreValue是读取的文件comparedContentIgnoreValue.json。与上例中所不同的是期待文件内容并不完全与返回的相一致。

测试高手进阶之路:接口测试用好“变量”,重复验证也不怕

在comparedContentIgnoreValue.json 中,与上一个用例对比,这里可以看到 "text": 的值换成了"#ignore",当进行对比时,这个字段的内容会忽略。

测试高手进阶之路:接口测试用好“变量”,重复验证也不怕

用例三:使用变量验证某个特定的value是否出现

在用例一、用例二中,同时出现了代码:And match response.ad.url == adUrl , 这里的adUrl 实际就是Background 中自定义变量 * def adUrl = 'http://statuscode.org/' 。

测试高手进阶之路:接口测试用好“变量”,重复验证也不怕

用例四:使用变量验证某个特定的key是否出现

在下面的场景中,代码And match response.ad.text != null 验证了返回结果中ad下text 字段必须存在。

下面两行代码先定义了一个变量notPresentedKey 并且赋予对应的ad下keyNull的字段,然后再验证notPresentedKey 不存在。这里的变量是必需的,否则会出现找不到路径错误。(参看常见错误)

这个变量不能放在Background 在本示例中,因为response是发送get请求以后返回的结果,如果放在Background中,response 还没有返回,引用就会有错。(参看常见错误)

* def notPresentedKey = response.ad.keyNull

And match notPresentedKey == null

测试高手进阶之路:接口测试用好“变量”,重复验证也不怕

常见错误

1.文件读取

用例一,用例二中,当json文件内容格式不正确时,就会现如下运行错误:

测试高手进阶之路:接口测试用好“变量”,重复验证也不怕

2.不使用变量验证不存在的字段

在用例四中,如果直接用And match response.ad.keyNull == null, 会出现如下错误信息,这是因为在验证的时候,会先寻找对应的路径 ad.keyNull, 在返回的结果中是不存在ad.keyNull字段的。)

测试高手进阶之路:接口测试用好“变量”,重复验证也不怕

3.在Background中提前引用response

测试高手进阶之路:接口测试用好“变量”,重复验证也不怕

字段的匹配与写法

如下图所示的正确Json文件格式,整个返回的内容在karate中称作 response。如果要想验证data下的id字段,就可以引用 response.data.id。这里做些补充以免有些初学不清楚如何引用字段(其实这也是我开始学习时感到困惑的哦。)

测试高手进阶之路:接口测试用好“变量”,重复验证也不怕

结语

是不是变量特别好用啊,节省了很多写代码的时间哦,可以看到定义在Background 中的变量看作是全局变量,可以用在任意一个场景中。在某个场景中定义的变量可以说是局部变量。希望小伙伴们灵活灵用,为您的API 测试助力、加油。

 

责任编辑:张燕妮 来源: 今日头条
相关推荐

2011-04-18 10:46:39

接口测试

2015-07-28 17:11:00

编程技术提升

2011-05-19 15:37:57

测试

2021-03-04 15:43:29

前端测试工具开发

2011-06-08 17:23:12

测试用例

2011-05-16 15:18:18

测试用例

2012-11-28 01:51:53

2023-02-01 09:27:46

2022-05-10 14:54:13

验收标准测试用例

2021-12-22 10:19:47

鸿蒙HarmonyOS应用

2009-03-10 15:30:51

测试架构师软件测试职场

2011-05-16 15:09:20

测试用例

2012-10-24 14:56:30

IBMdw

2020-12-08 12:24:55

接口测试Interface

2020-08-25 08:03:59

测试Sharness结构

2022-01-19 17:48:57

测试用例开发

2011-05-16 14:54:12

测试用例

2011-07-04 18:06:52

测试用例

2011-12-23 17:03:29

性能测试用例设计

2023-06-09 15:24:50

UiTest接口鸿蒙
点赞
收藏

51CTO技术栈公众号