Как проверить, что возвращенный ответ JSON находится в порядке сортировки? - PullRequest
0 голосов
/ 23 ноября 2018

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

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

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

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

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

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

Ответы [ 2 ]

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

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

0 голосов
/ 23 ноября 2018

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