Пачынаючы з JMeter 3.0, значна лягчэй здабываць дадзеныя з адказаў JSON, выкарыстоўваючы экстрактар зменных JSON. JSON - гэта надзвычай просты фармат дадзеных, які прыняў XML некалькі гадоў таму.
Усё большая колькасць REST API і сервераў выкарыстоўвае JSON у якасці асноўнага фармату абмену дадзенымі. Тут мы будзем выкарыстоўваць JMeter для аналізу адказу JSON.
Калі ў вас не ўсталяваны JMeter, прачытайце гэты артыкул, якая тлумачыць як усталяваць JMeter на Mac OS .
Дапусцім, у нас ёсць адказ 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
Цяпер мы павінны ўбачыць наступны пункт гледжання:
У поле выразаў шляху JSON мы можам ўставіць наш шлях 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
| +---------------------------------------+--------------------------------------------------------------+