目录
引言
与UI相比,接口一旦研发完成,通常变更或重构的频率和幅度相对较小。因此做接口自动化的性价比更高,通常运用于迭代版本上线前的回归测试中。
手工做接口测试,测试数据和参数都可以由测试人员手动填写和更新。
因此我们在考虑将接口用例实现自动化的时候,主要思路就是在单个接口请求的测试用例已经完成的前提下,我们如何解决以下问题:
-
业务测试场景会调用不止一个接口,下一个接口的请求依赖于上一个接口的数据,需要解决接口依赖问题
-
token等鉴权数据有过期时间,多个接口用到该参数,需要解决一次修改,多处生效的问题
-
一个接口要用到多个测试数据做覆盖
-
批量测试下,需要知道某个接口返回的参数/数据是否符合预期
本文使用的自动化接口测试工具为Apifox,官网下载地址:www.apifox.cn 直接下载注册安装后即可使用。 接下来依次讲解下上述问题如何使用apifox解决。
正文
一.接口传参
举一个常见的场景说明。查询接口请求获取数据的时候,需要带一个access_token的参数,而access_token参数需要另外的鉴权接口获取。因此需要鉴权接口将获取到的token参数传递给查询接口,查询接口才能发起请求。
另一个常见的场景是,用户需要先登陆,才能将选中的商品加入购物车。 这个接口顺利发起请求依赖于上一个接口获取数据。 手动测试的情况下,直接人工复制即可。
解决方案: 需要将上一个接口返回的数据进行识别提取出目标参数,保存为全局变量,下一个接口直接调用参数。
步骤: 1)在apifox的接口tab-后置操作tab,选择提取变量
2)填写变量名称,变量类型和提取的表达式。提取表达式符合json path 语法。在本接口数据中由于返回数据只有一层,因此采用$.目标参数的方式提取。 如果有多层参数,可以点击提取表达式旁边的问号,查看详细的json path语法。
获取到的参数以变量的形式存储,点击接口tab右上角的设置图标,可以查看到获取到的环境变量的值。
接着就可以在下一个接口,以参数的方式调用:
二. 外部数据源
一些post数据给后台处理的接口,需要对上传不同的数据来测试接口的返回和异常兼容,一个接口参数需要多次使用不同的数据。 手动情况下我们可以直接在参数里填数据,之后每次手动改。
但如果实现自动化的话,像上述的测试方式难以实现。 常用的解决方案是先编辑好csv文件,将测试数据一一写好保存,最后传入到接口请求参数中。 Apifox在这个问题上提供的解决方案为:a.对于少量的测试数据,可在界面内填好测试数据集供接口每次调用;如果是大量的数据,才使用csv文件;更少量的数据则可以直接写在全局变量中。
以全局变量的方式导入和上节讲到的接口传参类似,区别只在于测试数据不是从上一个接口获取到而是的我们自己填进去的。 若是使用外部测试数据集,在测试管理tab&