Как проверить, что возвращенный ответ JSON находится в порядке сортировки?
У меня есть API для получения списка имен сотрудников в организации, и он поддерживает порядок по пунктам. Я вызвал API "get /employeeName?$ Ordeyby=name desc". Я получил результаты, как показано ниже,
{
"value":[
{
"name":"Sam"
},
{
"name":"Peter"
},
{
"name":"Harry"
},
{
"name":"Arnold"
}]
}
Я проанализировал каждое имя и сохранил переменную строкового типа.
Как я могу проверить с помощью JAVA Script/BeanShell/Groovy, что возвращенный ответ находится в порядке убывания?
Может кто-нибудь, пожалуйста, помогите здесь. Любой из вышеупомянутых языков в порядке, и я хочу, чтобы это было реализовано в JMeter.
Заранее спасибо.
2 ответа
Решение
- Добавьте утверждение JSR223 как дочерний элемент запроса, который возвращает вышеуказанный JSON
Поместите следующий код в область "Сценарий":
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) } }
- Вот и все, в случае ожидаемого алфавитного убывания порядок сэмплера будет успешным, в противном случае вы получите сообщение об ошибке, указывающее, какое имя ожидается, а какое является действительным.
Дополнительная информация:
Вы можете отсортировать его в 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;
}));