如何验证返回的 JSON 响应是否按排序顺序排列?

How to verify the returned JSON response is in sorting order?

我有一个 API 来获取组织中员工姓名的列表,它支持按子句排序。 我调用了 API "get /employeeName?$ordeyby=name desc"。我得到如下结果,

{
"value":[
{
  "name":"Sam"
},
{
  "name":"Peter"
},
{
  "name":"Harry"
},
{
  "name":"Arnold"
}]
}

我已经把每一个名字都解析出来存进了一个字符串类型的变量中

如何使用 JAVA Script/BeanShell/Groovy 验证返回的响应是否按降序排列?

任何人都可以在这里帮忙。上述任何一种语言都可以,我希望这需要在 JMeter 中实现。

提前致谢。

您可以使用这种方法在 js 中对其进行排序

var employers = [
    {
      "name":"Sam"
    },
    {
      "name":"Peter"
    },
    {
      "name":"Harry"
    },
    {
      "name":"Arnold"
    }];

    console.log(employers.sort(function(e1,e2){
    var alc = e1.name.toLowerCase(), blc = e2.name.toLowerCase();
      return alc > blc ? 1 : alc < blc ? -1 : 0;
    }));
  1. 添加 JSR223 Assertion 作为上述 returns JSON
  2. 请求的子项
  3. 将以下代码放入"Script"区域:

    def expected = com.jayway.jsonpath.JsonPath.read(prev.getResponseDataAsString(), '$..name').sort().reverse()
    
    new groovy.json.JsonSlurper().parse(prev.getResponseData()).value.eachWithIndex { def entry, int i ->
        if (!entry.name.equals(expected.get(i))) {
            AssertionResult.setFailure(true)
            AssertionResult.setFailureMessage('Order mismatch, expected: ' + expected.get(i) + ', got: ' + entry.name)
        }
    }
    
  4. 就是这样,在预期的字母降序的情况下,采样器将成功,否则您将收到一条错误消息,指示预期的名称和实际的名称

更多信息: