Jmeter—正則表達式提取器使用


在jmeter里正則表達式用的位置比較多。

一、正則表達式

功能是從請求的響應結果中取到需要的內容,作為下一個接口的入參從而實現關聯。正則表達式提取器可配合Debug Sampler來查看各變量取值。

 

要關聯這個

user_id":"10145"

 

說明:

簡單介紹一下Jmeter正則表達式提取器的使用方法。

1、添加Jmeter正則表達式提取器

在具體的Request下添加Jmeter正則表達式提取器(Jmeter正則表達式在“后置處理器”下面)

2、Jmeter正則表達式提取器控制面板,截圖如下:

位置1:名稱及注釋

位置2:正則表達式提取內容的范圍。(關於各字段的詳細說明請查閱協議的相關說明)

位置3:正則表達式提取的相關設置

    • 引用名稱:自己定義的變量名稱,后續請求將要引用到的變量名,如填寫的是:user_id,后面的引用方式是${user_id}
    • 正則表達式:提取內容的正則表達式,相當於lr中的關聯函數
    • 【()     括起來的部分就是需要提取的,對於你要提的內容需要用小括號括起來】
    • 【.    點號表示匹配任何字符串】
    • 【+   一次或多次】
    • 【?   在找到第一個匹配項后停止】
    • 模板:用$$引用起來,如果在正則表達式中有多個正則表達式(多個括號括起來的東東),則可以是$2$,$3$等等,表示解析到的第幾個值給user_id。例如:$1$表示匹配到的第一個值
    • 匹配數字:0代表隨機取值,-1代表所有值,此時提取結果是一個數組,其余正整數代表第幾個匹配的內容提取出來。如果匹配數字選擇的是-1,還可以通過${user_id_1}的方式來取第1個匹配的內容,${user_id_2}來取第2個匹配的內容。 
    • 缺省值:正則匹配失敗時,取的值

 

問題1:(.+?) 與(.*?)  區別

(.+?)  匹配一個以上

(.*?)   匹配0個及以上,要取的值是空值的時候可以取到

比如labelId":"";  要取labelId的值,使用(.+?) 匹配不到值,使用(.*?) 就可以取到值為空對應寫法為 labelId":"(.*?) ";

如果正則中有轉義怎么辦?

id?labelId":"1290"   正則寫法 id\?labelId":"(.+?)"
labelId\":\"1290\"     正則寫法 labelId\\":\\"(.+?)\\" 
labelId":(1290),       正則寫法 labelId":\((.+?)\),

 

問題2:一個表達式匹配多個參數

 調用方法${list_g1} ${list_g2}  

 

例如,假設:
引用名:RefName
正則表達式:name=”(.+?)” value=”(. + ?)”
模板:$1$$2$

以下的變量將被設置:
RefName:file.namereadme.txt
RefName_g:groups的數量(在此為2)
RefName_g0:name=”file.name” value=”readme.txt”
RefName_g1:file.name
RefName_g2: readme.txt
---------------------
作者:約會遠行
來源:CSDN
原文:https://blog.csdn.net/yue530tomtom/article/details/76571632
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

3、一種不是很常見的情況是有若干個匹配數據,使用正則表達式測試器測試的結果如下:

若希望取到17這個值,則對應的是第二列第二行($2$, ${javawd_g2}),如果是第三列第四行的數據,則對應的是($3$,${javawd_g4})

這種情況在Jmeter正則表達式提取器和HTTP請求中的設置如下:

 


免責聲明!

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



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