Jmeter功能(三)關聯

後置處理器的Regular Expression Extractor就是關聯元件,可以幫助我們從服務器響應數據查找到我們需要的數據。所謂關聯,就是使用第一個Request的響應數據,去訪問第二個Request。下面以一個例子做介紹——

創建一個http請求,訪問地址toy1.weather.com.cn//search?cityname=城市,然後從返回數據中獲取北京的地區代碼,使用該地區代碼訪問另一個地址www.weather.com.cn/weather2d/地區代碼.shtml,獲取天氣信息。具體步驟如下:

1.創建用戶自定義變量

定義一個變量,city=北京,使用它的時候用${city},本test有多處使用該變量,故定義一個變量可以更加方便地進行統一修改。


2.創建一個獲取北京地區代碼的請求


3.創建正則表達式

創建一個正則表達式,把Response的值提取到變量中,提供給別的HTTP Request使用。選擇HTTP請求,右鍵Add-> Post Processors->Regular Expression Extractor,打開正則表達式頁面,進行設置


各個參數的意義如下:

Reference Name:引用名稱,匹配出來的信息用此變量名稱進行引用,如${citycode}

Regular Expression:正則表達式

():括起來的部分就是要提取的。
.:匹配任何字符串。

*:0次或多次
+:1次或多次。
?:不要太貪婪,在找到第一個匹配項後停止。

Template:模板,即正則表達式,可以設置多個模板進行匹配,使用$數字$指定用哪個模板,如$1$指第一個模板,$2$指第一個模板,以此類推,$0$指全文匹配

Match NO.:匹配到多個結果時,0代表隨機取匹配值,用數字來確定取這一組值中的哪一個,負數取所有值

Default Value:缺省值,如果參數沒有取到值,指定一個默認值

在此補充一下有多個模板即正則表達式、匹配到多個值時,如何參數化?使用${result_gn}來引用,其中result是引用名稱,_gn來指定模板組別,如${result_g1}代表第一個模板。舉個例子:

假如想匹配W如下部分:name = "file.name" value = "readme.txt"並提取file.name和readme.txt。正則表達式可以寫成:name = "(.+?)" value = "(.+?)"。這樣就會創建2個組,分別用於$1$和$2$。假設引用名稱:MYREF,模板:$1$$2$,那麼,MYREF_g1匹配到的值是file.name,MYREF_g2匹配到的值是readme.txt,使用${MYREF_g1}、${MYREF_g2}進行使用。

4.創建一個獲取北京天氣的請求

發送請求到www.weather.com.cn/weather2d/${citycode}.shtml,${citycode}中的數據是從Regular Expression Extractor提取出來的。


5.運行,查看結果樹


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章