目前,绝大多数接口协议的响应结果都采用 JSON 格式,因此在接口测试的场景编排中对于接口的参数提取及引用变得越来越重要。尤其是在实际工作中通常会遇到一些复杂的业务流程,需要对 JSON 的结果进行特定的提取和引用,以及结合循环控制器使用。
MeterSphere 一站式开源持续测试平台的接口测试模块支持 JSONPath 类型的参数提取,可以提取给定 JSON 文档的部分内容。本文将分享通过 MeterSphere 进行接口测试时,用 JSON 提取数组及引用在实际工作场景中的一些高级用法,为实际的测试工作提效提速。
实际工作中常见的使用场景:
■ 提取数组中某个特定值;
■ 提取数组中全部值;
■ 提取数组中的某几个特定值;
■ 按下标引用数组中某个值;
■ 引用数组全部值;
■ 获取数组元素的数量;
■ ForEach 控制器循环引用数组中的值。
注:本文示例均以在 MeterSphere 中登录接口为例。
用法举例:输入 $.data.groups[n].name 提取特定值。
用法举例:输入 $.data.groups[*].name,并勾选匹配多条以提取全部值。
用法举例:如提取数组中第 1 个和第 3 个值,则输入 $.data.groups[1,3].name,并勾选匹配多条。
用法举例:输入 ${name_1}引用数组中的第一个值。
用法举例:输入 ${name_ALL}以引用数组中的全部值。
用法举例:输入 ${name_matchNr}以获取数组元素的数量。
用法举例:添加循环控制器,使用方式可以用 ${n}或者 vars.get("n") 进行提取。
备注:关于 JSON 提取规则及使用方式可参考文章《JMeter 之 JSON 提取器详解(史上最全)》(https://www.cnblogs.com/51benpao/p/13043706.html)。