Я создал почтовый запрос в 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
MichaelB 7 Ноя 2018 в 16:51

1 ответ

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

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

  1. Загрузите jsonassert-x.x.x.jar и поместите его где-нибудь в Путь к классам JMeter
  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 вы получите сообщение об ошибке, в котором указаны различия.

0
Dmitri T 7 Ноя 2018 в 14:25