1. 程式人生 > 實用技巧 >jmeter斷言之JSON Assertion

jmeter斷言之JSON Assertion

jmeter斷言之JSON Assertion

1:什麼條件下使用json斷言是合適的?

若伺服器返回的Response Body為JSON格式的資料,使用JSON斷言來判斷測試結果是較好的選擇。

2:json資料結構

JSON用於描述文字資料結構,有如下形式:
1.物件(object)
  物件是一組無序的名稱/值對。物件以{(左大括號)開始,以}(右大括號)結束。每個名稱後面跟著:冒號,名稱/值對之間用逗號分隔。比如:
  {"name":"zhangsan","sex":1,"age":25}
2.陣列(Array)
  陣列是值的有序集合。陣列以[(左中括號)開始,以](右中括號)結束。值之間用逗號分隔。
  比如:
{
"cert_sign":"",
"current_beans":
[
{
"branch_code":"1909291058080031",
"buyer_pay_amount":"null",
"amont":1
},
{
"branch_code":"1909291058080031",
"buyer_pay_amount":"null","amont":10
}
],
"error_code":"0TE110001000",
"error_info":"交易成功",

}
如何獲取json資料?

獲取error_code,$.error_code
獲取current_beans中第一條資料branch_code值,$.error_code.current_beans[0].branch_code
獲取current_beans中所有條資料branch_code值,$.error_code.current_beans[*].branch_code
獲取current_beans前兩條資料,$.error_code.current_beans[0,1]
獲取current_beans資料其中amont大於1,$.error_code.current_beans[?(@.amont>1)]
獲取current_beans
最後一條資料,$.error_code.current_beans[-1:]

3:jmeter JSON Assertion配置
Assert JSON Path exists
用於斷言的JSON元素的路徑JSONPath)。
1.Additionally assert value
  是否額外驗證根據JSONPath提取的值
  不勾選,驗證JSONPath能否在JSON文件中找到路徑
  勾選,驗證根據JSONPath提取值是否預期
2.Match as regular expression
  預期值是否可以使用正則表示式。
  不勾選,預期值不能使用正則表示式表示;
  勾選,預期值可以使用正則表示式表示。
預期值
1.Expect null
  若驗證提取的值為null,則勾選此項。
  這裡有兩個地方需要額外注意:
  a.驗證null值,還是需要勾選“Additionally assert value”,否則驗證的是JSONPath能否找到路徑
  b.預期值不填表示空字元,與null不等價
2.Invert assertion(will fail if above conditions met)
  若勾選,表示對斷言結果取反。

注意:
除了null外,還有一種特殊的值,就是空陣列,預期值不能不填,需要設定為:[]
其中[]表示空陣列。
如圖:

4:樣例演示

4.1:預期返回的值為null;校驗響應返回json資料是否有pay_status,沒有則短驗通過

參考:https://zhuanlan.zhihu.com/p/72918260?from=singlemessage