如何验证返回的 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;
}));
- 添加 JSR223 Assertion 作为上述 returns JSON
请求的子项
将以下代码放入"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)
}
}
- 就是这样,在预期的字母降序的情况下,采样器将成功,否则您将收到一条错误消息,指示预期的名称和实际的名称
更多信息:
我有一个 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;
}));
- 添加 JSR223 Assertion 作为上述 returns JSON 请求的子项
将以下代码放入"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) } }
- 就是这样,在预期的字母降序的情况下,采样器将成功,否则您将收到一条错误消息,指示预期的名称和实际的名称
更多信息: