Как проверить, что возвращенный ответ JSON находится в порядке сортировки?

У меня есть API для получения списка имен сотрудников в организации, и он поддерживает порядок по пунктам. Я вызвал API "get /employeeName?$ Ordeyby=name desc". Я получил результаты, как показано ниже,

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

Я проанализировал каждое имя и сохранил переменную строкового типа.

Как я могу проверить с помощью JAVA Script/BeanShell/Groovy, что возвращенный ответ находится в порядке убывания?

Может кто-нибудь, пожалуйста, помогите здесь. Любой из вышеупомянутых языков в порядке, и я хочу, чтобы это было реализовано в JMeter.

Заранее спасибо.

2 ответа

Решение
  1. Добавьте утверждение JSR223 как дочерний элемент запроса, который возвращает вышеуказанный JSON
  2. Поместите следующий код в область "Сценарий":

    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)
        }
    }
    
  3. Вот и все, в случае ожидаемого алфавитного убывания порядок сэмплера будет успешным, в противном случае вы получите сообщение об ошибке, указывающее, какое имя ожидается, а какое является действительным.

Дополнительная информация:

Вы можете отсортировать его в 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;
    }));
Другие вопросы по тегам