一、JMeter響應斷言
看一下官方文檔介紹,斷言:
斷言用於對采樣器執行結果的檢查,並在同一范圍內的每個采樣器之后進行處理。如果要對某個采樣器進行斷言,直接將斷言添加到采樣器的子集即可。
為什么要用斷言?
JMeter以及Postman等接口測試工具,他們都是基於協議進行工作的,使用這些工具進行發送請求,當請求發送成功的時候(即協議發送成功),在查看結果樹中請求樣本顯示綠色。比如協議狀態碼是200就是成功,也是僅僅代表協議發送成功,但是業務不一定成功。有可能是協議發送成功了,但是業務沒有成功,但是JMeter默認不做判斷。那么想要校驗業務成功還是失敗,就得需要進行斷言,斷言根據接口的響應進行斷言,一般主要斷言業務狀態碼以及messege等信息。
怎么判斷JMeter響應斷言成功?
舉個實JMeter斷言成功,在查看結果樹中請求是綠色,看不到斷言成功的信息。當JMeter斷言失敗的時候,結果樹中顯示為紅色,可以看到斷言失敗的信息。
響應斷言
斷言頁面的解釋:
一、Apply to:
1.名稱:自行定義,就是節點的名稱
2.注釋:節點的注釋,容易理解的解釋
3.Apply to:斷言可以應用於主樣本,子樣本或者兩者。默認斷言是第二個,斷言應用於主樣本。
(1)Main sample and sub-samples:主樣本和子樣本
(2)Main sample only:僅主樣本
(3)Sub-samples only:僅子樣本
(4)JMeter Variable Name to use:JMeter使用變量名字,斷言將應用於命名變量的內容
使用說明:
一般情況下,直接使用主樣本(默認)的斷言即可。因為大多數情況下,只有主請求才會具有所必須的斷言數據,但是前端的JavaScript語言,有兩個框架ajax和jquery單個請求可以在內部產生多個子請求,並且每個請求都會有響應數據,所以說,大多數情況下,進行主要采樣器的斷言就足夠了。
如果斷言中選擇Main sample and sub-samples,那么斷言就要校驗主采樣器和子采樣器的響應,看一下結果,除了主采樣器的響應中包含“退出登錄”,其他的子采樣器的響應沒有“退出登錄”,所以會斷言失敗,其他幾個是同理。
這里講一下JMeter Variable Name to use:JMeter使用變量名字,斷言將應用於命名變量的內容。我嘗試了一下,可以這樣用,有錯的麻煩提出。
斷言正確,如果正則中的變量名和斷言中的變量名不一致,斷言則會失敗。
二、模式匹配規則(Pattern Mactching Rules)
1.包括(Contains):返回的結果包括所指定的內容,支持正則匹配
舉例:
接口的響應
進行斷言,斷言通過。
2.匹配:
與Equals幾乎一樣,都是斷言要和返回值完全一致。不同的是,這里支持正則,寫正則表達式時,正則表達式也要完全和返回值匹配,才能夠通過。
3.Equals:
返回結果與你指定斷言完全一致,不支持正則匹配。注意是完全一致,這個只有一個特殊情況會用到,一般很少用。
4.SubString
與“包括”功能類似,不同點為,不支持正則匹配。
5.否
反之,非 的意思
6.或者
可以為多個值,可在下面,例如一個斷言里面可能有兩個不同的判斷值,可以選中去用,當滿足一個要求的時候,就算成功。這個功能還是可以多用的,像上面那個例子,多斷言幾種情況。
三、Custom failure message
當判斷返回值為錯誤的時候,返回什么信息。可以在斷言結果內顯示。
舉例:
在查看結果樹中可以看到剛才填寫的斷言的信息