Начиная с JMeter 3.0, намного проще извлекать данные из ответов JSON с помощью экстрактора переменных JSON.JSON - это чрезвычайно простой формат данных, который перенял XML несколько лет назад.
Все большее число API-интерфейсов REST и серверов используют JSON в качестве основного формата обмена данными.Здесь мы будем использовать JMeter для анализа ответа JSON.Предположим, у нас есть ответ JSON:
{
"store": {
"book": [
{
"category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{
"category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
},
"expensive": 10
}
Чтобы проанализировать вышеупомянутый JSON с JMeter, нам нужно добавить JSON Extractor в наш план тестирования.
Щелкните правой кнопкой мыши План тестирования -> Добавить -> Постпроцессоры -> JSON Extractor
jmeter json extractor parser
Теперь мы должны увидеть следующее представление:
json extractor jmeter
В поле выражения JSON Path мы можем вставить наш путь JSON для анализа ответа JSON
Вот несколько примеров выражений Json Path, которые можно использовать для извлечения данных из документа Json, представленного выше:
JSONPATH RESULT
$.store.book[*].author The authors of all books
$..author All authors
$.store.* All things, both books and bicycles
$.store..price The price of everything
$..book[0,1] The first two books
$..book[:2] All books from index 0 (inclusive) until index 2 (exclusive)
$..book[2:] Book number two from tail
$..book[?(@.isbn)] All books with an ISBN number
$.store.book[?(@.price < 10)] All books in store cheaper than 10
$..book[?(@.price <= $[‘expensive’])] All books in store that are not “expensive”
$..book[?(@.author =~ /.*REES/i)] All books matching regex (ignore case)
$..* Give me every thing
$..book.length() The number of books