一、響應斷言
可根據(jù)要測試的響應字段和模式匹配規(guī)則來設置斷言,判斷接口返回值是否正確。
1.運行一個登錄的http請求,查看響應數(shù)據(jù):

2.添加響應斷言

勾選,輸入相關信息??(測試字段與輸入的參數(shù)要是對應的)
一個斷言:

多個斷言,但必須同時滿足,才算斷言成功:

勾選"或",多個斷言,滿足一個即成功:

① 測試字段:
響應文本: 服務器響應文本,一般普通http響應,都勾選這個。
響應代碼:http響應代碼,如101,200,302,404,501等。但當我們要驗證404,501等http響應代碼時,需要勾選“ ignore status”。因為當http 響應代碼為400,500時,jmeter默認這個請求時失敗的。
響應信息:http響應代碼對應的響應信息,例如:OK, Found? ?(斷言時大小寫敏感)
?HTTP/1.1 200 OK
?HTTP/1.1 302 Found?
響應頭:例如
? ? ? ? ? ? ? ? ? ? Server: Tengine
????????????????????Date: Thu, 12 Mar 2015 09:43:52 GMT
????????????????????Content-Type: text/html
????????????????????Content-Length: 260
????????????????????Connection: close
????????????????????Location: http://www.baidu.com/404.html
文檔(文本):一般普通http請求,不要選擇這個。
url樣本:是對sample的url進行斷言。如果請求沒有重定向(302),那么就是這個就是請求url。 如果有重定向(且跟隨重定向),那么url就包含請求url 和 重定向url
② 模式匹配規(guī)則:
包括:返回結果包括你指定的內(nèi)容,支持正則匹配
例如:
測試字段為: 響應文本
? ? ?模式匹配規(guī)則:包括
? ? ?斷言為:1、invalid ? ?2、[a-z]+
當返回值為:{"msg":"channel invalid."} , 這兩個斷言都是ok的,返回true
備注:[a-z] 表示匹配 26 個小寫字母中的任意一個
? ? ? ? ? ?a+ 表示匹配一個或多個 a 字符
? ? ? ? ? ?所以[a-z]+表示一個或多個? 26 個小寫字母中的任意一個 ?
匹配:
? (1) 相當于 equals 。當返回值固定時,可以用返回值做斷言,效果和equals相同
? (2) 正則匹配 。 用正則表達式匹配返回結果,但必須全部匹配。 即正則表達式必須能匹配整個返回值,而不是返回值的一部分。
相等 :返回結果與你指定斷言完全一致
SubString:與 “包括”差不多,都是指返回結果包括你指定的內(nèi)容,但是subString不支持正則字符串
否:就相當于取反。 如果上面斷言結果為true,勾選“否”后,最終斷言結果為false。如果上面斷言結果為false,勾選“否”后,則最終斷言結果為 true。
3.添加斷言結果

斷言結果會記錄 執(zhí)行成功和執(zhí)行失敗的記錄

二. BeanShell斷言
BeanShell斷言可以用于更復雜的個性化需求,使用更靈活,功能更強大
一個簡單示例:
例中的代碼就是判斷響應代碼是不是200,是200即斷言成功;不是200則斷言失敗,輸出報錯信息
不過呢。。這個代碼對我來說有一點局限性,有些值還是不會取。。有沒有更適合我的方法呢?

有!
根據(jù)這個教程Jmeter使用BeanShell 斷言進行判斷受到了啟發(fā)
教程內(nèi)容截圖:
看!這個引用!我可以先用提取器提取要驗證的內(nèi)容,然后引用在代碼里進行驗證

實際應用:
登錄成功時,error_code值為0,若登錄失敗值不為0

用邊界提取器提取error_code的值

引用在代碼里

一個登錄失敗的情況:


不過代碼還是要學起來呀。。(哭)
響應斷言參考教程:
Jmeter筆記:響應斷言詳解(有測試字段的詳細說明)
JMeter 檢查點之響應斷言(Response Assertion)(也有測試字段的詳細說明)
?BeanShell斷言參考教程:
https://blog.csdn.net/lijing742180/article/details/81157947
https://blog.51cto.com/14010723/2298911(含BeanShell內(nèi)置變量說明)