在JMeter中验证API返回结果的Name与ID升序排序
在JMeter中验证API接口排序逻辑
需求说明
调用按name升序排序的查询接口后,需验证返回结果中的name字段与ID字段是否均为升序排列。接口响应示例:
{"value":[{"ID":"efe36a3b-8e7a-4850-a580-b9821195daca","name":"Harry"},{"ID":"efe36a3b-9e7a-4850-a580-b9821195dacb","name":"Jerry"},{"ID":"efe36a3b-8f7a-4850-a580-b9821195dacc","name":"Kate"},{"ID":"efe36a3b-8g7a-4850-a580-b9821195dacd","name":"Louis"}],"next":"https://localhost:8080/v1/empNames?$skip=20&$orderby=id desc"}
验证步骤
1. 提取响应中的name和ID字段
添加JSON Extractor元件,分别提取所有name和ID值:
- 提取
name:- 引用名称:
names - JSON Path表达式:
$..name - 匹配数字:
-1(表示提取所有匹配项)
- 引用名称:
- 提取
ID:- 引用名称:
ids - JSON Path表达式:
$..ID - 匹配数字:
-1
- 引用名称:
2. 编写Groovy脚本验证排序逻辑
添加JSR223 Assertion元件,使用Groovy脚本完成升序校验:
// 处理name字段排序校验 def nameList = new ArrayList(vars.getObject("names")) def sortedNameList = new ArrayList(nameList).sort() if (!nameList.equals(sortedNameList)) { AssertionResult.setFailure(true) AssertionResult.setFailureMessage("name字段未按升序排列,原序列:${nameList},预期序列:${sortedNameList}") } // 处理ID字段排序校验 def idList = new ArrayList(vars.getObject("ids")) def sortedIdList = new ArrayList(idList).sort() if (!idList.equals(sortedIdList)) { AssertionResult.setFailure(true) def msg = AssertionResult.getFailureMessage() ?: "" AssertionResult.setFailureMessage(msg + "\nID字段未按升序排列,原序列:${idList},预期序列:${sortedIdList}") }
3. 查看验证结果
运行测试计划后,若name或ID未按升序排列,JSR223 Assertion会标记请求失败,并在失败信息中展示原序列与预期排序序列的差异。
内容的提问来源于stack exchange,提问作者Hari
相关产品推荐
相关产品推荐

