一.什么是斷言。
通過對接口的返回進行篩選,選擇出一段特定的“字符串”片段,和確定響應的結果進行對比確定是否相同,如果相同則斷言成功。日常使用中,選擇的斷言應該是可以直觀的,准確的確定接口是否調用成功的一個數據。通常使用返回狀態碼,returncode,returnmsg,等類似的字段進行匹配。
jmeter常見的斷言有如下幾種:
下面我用以下的json作為返回,為之后提供依據。
{
"ROOT":{
"BODY":{
"DETAIL_MSG":"OK",
"OUT_DATA":{
"USER_INFO":{
"BRAND_ID":"01",
"CONTRACT_STATUS":"N",
"CURMM_EXP_POINT":"0",
"CURYY_EXP_POINT":"0",
"NET_AGE":"54",
"POINT_BALANCE":"274",
"POINT_TYPEINFO":[
{
"EFF_TIME":"test1",
"POINT_SUM":"31",
"POINT_TYPE":"01",
"POINT_TYPE_NAME":"快樂積分",
"RELEASE_TIME":"20210508210651",
"USED_POINT":"39",
"VALIDATE_TIME":"20240430235951"
},
{
"EFF_TIME":"test2",
"POINT_SUM":"32",
"POINT_TYPE":"02",
"POINT_TYPE_NAME":"快樂積分積分",
"RELEASE_TIME":"20210508210652",
"USED_POINT":"39",
"VALIDATE_TIME":"20240430235952"
},
{
"EFF_TIME":"test3",
"POINT_SUM":"33",
"POINT_TYPE":"03",
"POINT_TYPE_NAME":"快樂積分快樂積分積分",
"RELEASE_TIME":"20210508210653",
"USED_POINT":"38",
"VALIDATE_TIME":"20210508210653"
},
{
"EFF_TIME":"test4",
"POINT_SUM":"34",
"POINT_TYPE":"04",
"POINT_TYPE_NAME":"快樂積分快樂積分快樂積分積分",
"RELEASE_TIME":"20210508210654",
"USED_POINT":"39",
"VALIDATE_TIME":"20210508210654"
}
],
"PRC_CONTRACT_STATUS":"00",
"RELEASEFACTOR_UPTIME":"",
"RELEASE_FACTOR":"1",
"RUN_CODE":"A",
"STAR_LEVEL":"11",
"TOTAL_POINT":"274",
"VALIDATE_START_TIME":""
}
},
"PROMPT_MSG":"",
"REQUEST_ID":"20220308105819448_1_68",
"RETURN_CODE":"0",
"RETURN_MSG":"OK",
"RUN_IP":"5.243.0.28",
"USER_MSG":"OK"
},
"HEADER":{
"DB_ID":"A1",
"ROUTING":{
"ROUTE_KEY":"10",
"ROUTE_VALUE":"20175718"
},
"PARENT_CALL_ID":"20220308100319138397",
"TENANT_ID":"34"
}
}
}
1.響應斷言。
最長使用的是響應文本,只需要在測試模式的框中將需要返回的預期結果放入。jmeter會對整個的返回進行查找。如果找到,斷言正確。
返回報文中有測試模式中的語句,使用斷言正確
響應斷言其他的方式后續補充。
2.json斷言。
json斷言主要的原理是,根據json的鍵值對的模式進行匹配,層級篩選出想要的值。在進行斷言時,根據路徑確定鍵,則能的到對應鍵的值。
這樣斷言也會成功。
在上述的返回中,我們發現,還有嵌套的[]存在。這樣如何獲取?
在[]的情況下,沒有對應的鍵存在,只能通過上級節點的名稱加下標指定對應的json段。(下標從0開始)。$ 表示跟節點。[] 表示數組,0表示第一個;$[0] 表示跟節點后的第一個對象。.代表去下一個層級節點。具體的用法參照 :https://goessner.net/articles/JsonPath/。
注1:因為json斷言十分的依賴層級關系。在大量的復雜的json返回中,會出現層級較為混亂的現象,無法直觀的看出層級。這時候可以借助json工具規范化json方便查看。
3.斷言持續時間
約定響應時間,響應時間如果超出約定,則斷言為失敗。
4.大小斷言
對返回的數據包大小進行斷言。
5.JSR223 斷言
6.XPath2 Assertion
該斷言用於xml返回時使用。和json類似,通過層級的篩選,選出對應的值。