You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 03:05:01