在上一篇:主要介紹線程組、HTTP請求默認值、用戶定義的變量、固定定時器的應用場景及實戰。
以下主要介紹正則表達式提取器、調式取樣器(Debug Sampler)、響應斷言、HTTP信息頭管理器的應用場景及實戰。
一、正則表達式提取器
1、使用場景
從請求的響應結果中取到需要的內容,作為下一個接口的入參從而實現關聯。比如登錄后,用正則表達式獲取token,其他接口攜帶token請求。
2、正則表達式提取器界面說明
①HTTP請求右鍵,依次點擊添加--》后置處理器--》正則表達式提取器。

②創建的正則表達式提取器頁面如下:

APPly to:
- Main sample and sub-samples: 作用于主節點的取樣器及對應子節點的取樣器;
- Main sample only:僅作用于主節點的取樣器;
- Sub-samples only: 僅作用于子節點的取樣器;
- JMeter Variable Name to use: 作用于jmeter變量(輸入框內可輸入jmeter的變量名稱),從指定變量值中提取需要的值。
要檢查的響應字段:
- 主體:響應報文的主體,最常用;
- Body(unescaped):主體,是替換了所有的html轉義符的響應主體內容,注意html轉義符處理時不考慮上下文,因此可能有不正確的轉換,不太建議使用;
- Body as a Document:從不同類型的文件中提取文本,注意這個選項比較影響性能;
- 信息頭:響應信息頭;
- Request Headers:請求信息頭;
- URL:請求url;
- 響應代碼: 響應狀態碼,比如200、404等;
- 響應信息: 響應信息。
引用名稱:
提取結果之后的變量名稱,即下個請求需要引用的值,后面引用方式是${變量名}。
正則表達式:
使用正則表達式解析響應結果,()括號表示提取字符串中的部分值,前后是提取的邊界內容。
一般通用的正則表達式(.+?)。
如需了解更多關于正則表達式知識,可參照:Python自動化測試-正則表達式解析一文。
模板:
如果正則表達式有多個提取結果,則結果是數組形式。若只有一組表達式,則使用$1$,兩組正則匹配使用$1$$2$,以此類推。
匹配數字:
正則表達式匹配數據的結果可以看做一個數組:-1表示全部,0表示隨機,1表示第一個,2表示第二個,依次類推。
缺省值:
如果參數沒有取到值,那默認給個值,比如null。
3、實戰小例子
提取登錄響應結果的token:
①創建一個線程組。
②創建一個HTTP請求,用來發送登錄請求,登錄接口請求參數配置如下。

③HTTP請求,右鍵,創建一個正則表達式提取器。
先來看下登錄接口返回結果:
{????"data":?{????????"mobile":?"12345678",????????"id":?500,????????"rid":?0,????????"email":?"adsfad@qq.com",????????"username":?"admin",????????"token":?"Bearer?eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjUwMCwicmlkIjowLCJpYXQiOjE1OTA5MDY3MzAsImV4cCI6MTU5MDk5MzEzMH0.M3CWrgsDUMvnhkprQMBJ1wWY5OKO-mKiOD4EJ2YV4zc"????},????"meta":?{????????"msg":?"登錄成功",????????"status":?200????}}
正則表達式提取token,配置如下:

④創建一個察看結果樹,運行后,接口返回如下:

二、調式取樣器
(Debug Sampler)
1.使用場景
主要用于打印出變量進行調試。比如上面例子,雖然用正則表達式提取了token,但我們并不知道token是否有正確提取,可以使用調式取樣器查看。
2.調試取樣器界面說明
①線程組右鍵,依次點擊添加--》取樣器--》Debug Sampler。

②調式取樣器界面如下:

有三個參數Jmeter 屬性,選項值默認即可。
Jmeter 屬性,系統屬性,一般不會變,不需要調試。
Jmeter 變量調試的是Jmeter中自定義的變量,包含如下這些自定義變量:
- 選中線程組,右鍵,添加--配置元件—用戶定義的變量;
- 通過后置處理器生成的變量:Jmeter關聯;
- 使用csv參數化的變量:Jmeter參數化。
3.實戰小例子
①創建線程組、HTTP請求、正則表達式提取器、察看結果樹(介紹正則表達式實戰例子有,這里省略創建步驟)。
②創建調式取樣器(debug sampler),不需要修改,默認即可。

③運行,在察看結果樹中,選擇調試取樣器,可以看到token已經正常獲取到。

注意:一般來說調式取樣器(debug sampler)用于自測使用,上線時可以刪除。
三、響應斷言
1.使用場景
在接口測試過程中,需要判斷接口返回結果是否正確。
2.響應斷言界面說明
①HTTP請求,右鍵,依次選擇添加--》斷言--》響應斷言。

②響應斷言界面如下:

Apply to:
- Main sample and sub-samples 范圍包括主取樣器與所有子取樣器。
- Main sample only 范圍僅限于主取樣器。
- Sub-samples only 范圍僅限于所有子取樣器。
- JMeter Variable Name to use 范圍包括使用的Jmeter變量。
測試字段:
響應文本:響應正文。(常用)。
響應代碼:響應狀態碼,比如200、304、404等。
響應信息:響應消息。,比如OK、Not Modified、Not Found等。
響應頭:響應請求頭。
請求頭:請求頭。
URL樣本:請求的url。
文檔(文本):從各種類型的文檔中提取文本。此選項開啟也會嚴重影響性能,謹慎使用。
忽略狀態:忽略響應狀態。
請求數據:請求的body內容。
模式匹配規則:
包括:如果文本包含正則表達式模式,則為true。
匹配:如果整個文本與正則表達式模式匹配,則為true。
相等: 如果整個文本等于模式字符串(區分大小寫),則為true。
字符串:如果文本包含模式字符串(區分大小寫),則為true。
否:對斷言結果進行否定。
或者:將多個測試模式以邏輯“或”組合起來。
3.實戰小例子
①創建線程組、HTTP請求、正則表達式提取器、察看結果樹(上面實戰例子有寫,這里省略創建)。
②HTTP請求右鍵,創建一個響應斷言。我們再來看下響應結果的信息:
{????"data":?{????????"mobile":?"12345678",????????"id":?500,????????"rid":?0,????????"email":?"adsfad@qq.com",????????"username":?"admin",????????"token":?"Bearer?eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjUwMCwicmlkIjowLCJpYXQiOjE1OTA5MDY3MzAsImV4cCI6MTU5MDk5MzEzMH0.M3CWrgsDUMvnhkprQMBJ1wWY5OKO-mKiOD4EJ2YV4zc"????},????"meta":?{????????"msg":?"登錄成功",????????"status":?200????}}
斷言的方式可以多種,比如斷言msg、status或者msg、status一起斷言,甚至你用其他返回的字段也是可以的。
這里我們用msg斷言,配置如下:

③運行后,如斷言失敗,在察看結果樹里http請求會紅色顯示。
四、HTTP信息頭管理器
1.使用場景
在接口測試中,有時候需要攜帶請求頭,比如接口需要攜帶token進行請求,token需要放在請求頭里。
2.HTTP信息頭管理器界面說明
①線程組,右鍵,依次點擊添加--》配置元件--》HTTP信息頭管理器。

②HTTP信息頭管理器界面如下:

HTTP信息頭管理器比較簡單,直接添加請求頭信息的鍵值對就可以。
3.實戰小例子
①創建線程組、HTTP請求、正則表達式提取器、察看結果樹、響應斷言(上面實戰例子有寫,這里省略創建步驟)。
②線程組下,新建一個HTTP消息頭管理器。
在上面介紹正則表達式提取器,我們已經將登錄后的token用正則提取出來了,這里直接引用,相當于全局設置了token,其他接口請求時會自動在請求頭帶上token。
在HTTP信息頭管理器引用token如下:

③線程組右鍵,新建一個http請求,用于請求用戶數據列表接口。

④運行后,發現用戶數據列表接口在請求頭自動攜帶了token。

總結:本文主要介紹正則表達式提取器、調式取樣器(debug sampler)、響應斷言、HTTP信息頭管理的應用場景及實戰。
今日問題:
你在使用Jmeter過程中,常用的元件或插件有哪些?