Как утверждать JSON объекты в JMET? - PullRequest
0 голосов
/ 07 ноября 2018

Я создал пост-запрос в Jmeter, тело ответа на запрос в формате Json, и я хочу сделать сравнение между ответом, который у меня есть в файле csv, с ответом, который я получил от запроса Jmeter. Ответ на запрос не отсортирован, два ответа имеют одинаковое содержание, даже если они не находятся в одной структуре. Пример: почтовый запрос, тело ответа:

"getTestData":
{
    "id": 1,
    "name": "London",
    "Data": [
       {
        "Oxford",
        "Picadilly"
        },
       { 
        "Kensington",
        "Central"
       }
    ]
}

CSV-файл, каждое тело ответа json в строке:

   "getTestData":
    {
        "id": 1,
        "name": "London",
        "Data": [
           {
            "Oxford",
            "Picadilly"
            },
           { 
            "Kensington",
            "Central"
           }
        ]
    }

Может ли кто-нибудь помочь мне, как я могу сделать сравнение между двумя? Спасибо

1 Ответ

0 голосов
/ 07 ноября 2018
  1. Ваши 2 фрагмента идентичны
  2. Это не JSON, вы можете проверить себя, используя онлайн-валидатор JSON

В общем случае лучше использовать специальную библиотеку, т.е. JSONAssert , которая облегчит вашу жизнь

  1. Загрузите jsonassert-x.x.x.jar и поместите его где-нибудь в JMeter Classpath
  2. Перезапустите JMeter, чтобы взять .jar вверх
  3. Добавить JSR223 Утверждение как дочерний элемент запроса, который возвращает фактический ответ JSON
  4. Поместите следующий код в область «Сценарий»:

    def expected = vars.get('expected')
    def actual = prev.getResponseDataAsString()
    
    org.skyscreamer.jsonassert.JSONAssert.assertEquals(expected, actual, false)
    
    • Возможно, вам придется изменить 'expected' на фактическое имя переменной JMeter, как оно определено в вашей конфигурации набора данных CSV

Вот и все, в случае различий в файлах JSON вы получите сообщение об ошибке с указанием различий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...