前言
在測試時,我們經常需處理請求返回的響應數據,比如很多時候 cookie 或 token 或 Authorization授權碼 會返回在 Response headers(響應頭)中,這時我們便需要從中進行提取,以供其他接口使用。
今天我們主要學習下,如何在Jmeter中通過正則提取響應數據中 Response headers 的數據。
總的設置界面如下:
發送請求,獲取響應數據
首先,設置一個HTTP請求,如下:
接着,設置一個察看結果樹,然后執行,得到響應數據,下圖中的cookie即我們需要提取的數據:
正則提取響應數據
接下來,我們便設置一個正則提取器(用於提取出cookie),另外再設置一個調試后置處理程序(用於查看提取結果)
說明:
1.引用名稱:即變量名,后續請求中可以通過 ${引用名稱} 來調用
2.正則表達式:按實際情況填寫
3.模板:$$表示需要哪個正則表達式獲取的值,1代表第一個,-1代表全部,0代表隨機
4.匹配數字:1代表第一個,-1代表全部,0代表隨機
5.缺省值:如果正則未匹配到,就會使用缺省值
正則說明:
. 表示除“\r\n”之外的任意字符
* 表示匹配前面的子表達式任意次
+ 表示匹配前面的子表達式1次或多次
? 表示匹配前面的子表達式0次或1次
.*:貪婪匹配原則,即匹配到不能匹配為止
.*?:非貪婪匹配,即在匹配成功的情況下盡可能少的匹配
實例:存在字符串 7adbcfgfbesw ,要匹配7和b之間的字符
匹配1:使用 .* ,7開始之后,遇到第一個b不結束,繼續找下一個b,直到不能匹配,即匹配到 adbcfgf
匹配2:使用 .*? ,7開始之后,遇到第一個b就結束了,即匹配到 ad
查看提取結果
以上就是本次的提取結果,在這里,如果需在后續請求使用,可通過 ${response_data} 來關聯調用。
可能遇到的問題
假如,我們需提取 Set-Cookie 里的所有內容。此時,如果依然使用 .*? ,就會發現提取是不成功的,如下:
要解決這個問題也很簡單,我們修改正則表達式,使用 .* 貪婪匹配原則既可以。
好了,以上就是通過Jmeter正則提取的內容,提取其他數據,如 token 、 Authorization 等的方法與上面類似,大家可以進行實踐。