jmeter如何使用正則表達式,如何提取token等想要的數據


使用正則表達式,提取你想要的任何數據,

例如要提取響應結果里的token字段及sex字段(響應內容為:

"token":"83EEAA887F1D2F1AA1CDA9E197810992","sex":0,"userName":"12548650" 提取器如下設置,
正則表達式提取器說明:

 

Apply to:應用范圍(一般就選擇默認的Main sample only),就算有重定向,一般也是提取最終那個請求的接口。

要檢查的響應字段:樣本數據源。
主體: 接口響應主體內容,一般要提取普通http響應結果的數據,都勾選這個。
信息頭:響應頭的所有內容。
Request Headers:請求頭的所有內容。
url:是對sample的url進行匹配,也就是查看結果樹里請求內容的第一行url,不包含data里的請求參數(即只能匹配protocol(協議)+host+path+querystring,如:https://www.baidu.com/index.php?tn=monline_3_dg)。
響應代碼:http響應代碼,如101,200,302,404,501等。
響應信息:http響應代碼對應的響應信息,例如:OK, Found(HTTP/1.1 200 Ok;HTTP/1.1 302 Found)。
 
正則表達式:數據提取器,一般簡單的通用語法就是:左邊界(.*?)右邊界,左右邊界就是為了能准確定位到想匹配的內容,如最上面圖的"token":"(.*?)","sex":(.*?),"userName", 其中"token":"以及","sex": 和,"userName"這3個就是左右邊界,(.*?) 是替換了想要提取的內容,里面的'?'為非貪婪匹配,(非貪婪模式就是說在遇到第一個右邊界后就停止匹配,這樣就可以精確拿到想要的內容)。建議均使用非貪婪匹配,除非特殊情況。

【"()"    括起來的部分就是需要提取的,對於你要提的內容需要用小括號括起來】
【".":匹配除了換行符以外的任何字符】
【"*"(貪婪)   重復零次或更多
         例如"aaaaaaaa" 匹配字符串中所有的a  正則: "a*"   會出到所有的字符"a"】

【"+"(懶惰)   重復一次或更多次 
        例如"aaaaaaaa" 匹配字符串中所有的a  正則: "a+"  會取到字符中所有的a字符,  "a+"與"a*"不同在於"+"至少是一次而"*" 可以是0次】

【"?"(占有)   重復零次或一次
例如"aaaaaaaa" 匹配字符串中的a 正則 : "a?" 只會匹配一次,也就是結果只是單個字符a】

【"*?"   重復任意次,但盡可能少重復 

  例如 "acbacb"  正則  "a.*?b" 只會取到第一個"acb" 原本可以全部取到但加了限定符后,只會匹配盡可能少的字符 ,而"acbacb"最少字符的結果就是"acb" 】

【"+?"  重復1次或更多次,但盡可能少重復,與"*?" 一樣,只是至少要重復1次】

還有分組的情況,常用的就這兩種,其它的可以再自行百度

【"(?=exp)"  匹配exp前面的位置】

【"(?<=exp)"  匹配exp后面的位置】

 
模板:對應正則表達式提取器類型,樣式為:$n$。若模板為:$0$,則為整個表達式匹配到的內容,就是包括小括號內跟小括號外的內容,即("token":"83EEAA887F1D2F1AA1CDA9E197810992","sex":0,"userName")。若模板為:$1$,則對應正則表達式中的第一個(.*?)所匹配的內容,即(83EEAA887F1D2F1AA1CDA9E197810992) ,若模板為:$2$,則對應正則表達式中的第二個(.*?)所匹配的內容,即(0),若模板為$1$$2$,則把2個(.*?)所匹配的內容拼接起來,即(83EEAA887F1D2F1AA1CDA9E1978109920)。模板是可以自由組合的
 
匹配數字:正則表達式匹配數據的最終結果可以看做一個數組,匹配數字即可看做是數組的第幾個元素。當為 0 時,隨機返回匹配的數據。當為 1 時,表示返回匹配結果數組的第一個元素。當為負數(-1,-2,-100都可以)時,表示返回全部元素,並且同時會返回一個元素總數的變量token_matchNr,在引用時:通過${token_1}的方式來取第1個匹配的內容,${token_2}來取第2個匹配的內容。
 
缺省值:匹配失敗時的默認值。通常用於后續的邏輯判斷,建議使用一些特殊含義的,比如0,NULL,ERROR等。
 
 
引用名稱:其他地方引用時的變量名稱,名稱只能是一個,引用方法:${token}如下圖。類似這種的:${變量名稱}
 
 
 
正則測試:
可以直接在察看結果樹里選擇Regexp正則測試模式來測試正則是否寫的正確。
 
正則結果查看:
如何查看提取到了想要的內容呢,這里就需要提到另外一個后置處理器:【添加-后置處理器】Debug PostProcessor(中文:調試后置處理程序)
還有一個是【添加-取樣器-調試取樣器】這兩個都可以查看正則表達式提取的值
該元件就為調試所用,一般用於查看變量值,添加方法同正則表達式提取器。

 

 

 

 
 
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM