JMeter測試HTTP介面問題記錄02-正則提取器
1、首先要對正則表示式有初步的瞭解,在Jmeter中使用的正則表示式比較簡單,需要記住常用的匹配符合表示式即可完成測試工作,常用的特殊字元含義如下:
特殊字元:
() 標記一個表示式的開始和結束的位置。字表達式可以獲取供以後使用,如果要匹配括號字元,請使用轉義字元\( 和 \)
. 匹配除換行符以外的任何單字元
* 匹配前面的子表示式0次或多次。如果要匹配*號,則需要使用轉義字元 \*
+ 匹配前面的子表示式1次或多次。 如果要匹配+, 則需要使用轉義字元\+
? 匹配前面的子表示式0次或一次。當該字元緊跟在任何一個其他限定符 * . + n m等後面時,匹配模式是非貪婪的。非貪婪模式儘可能少的匹配所搜尋的字串,而預設的貪婪模式則儘可能多的匹配所搜尋的字串。
樣例:
(.*?) 含義: 儘可能少的匹配,可以為空
(.+?) 含義:儘可能少的撇皮,不能為空
以上兩個樣例在Jmeter的引數提取中運用非常廣泛,下面看一下Jmeter中正則提取器的使用
2、Jmeter中正則提取器的使用
首先介紹Jmeter正則提取器的頁面配置:
位置1:名稱及註釋
位置2:正則表示式提取內容的範圍。(關於各欄位的詳細說明請查詢協議的相關說明)
位置3:正則表示式提取的相關設定
-引用名稱:自己定義的變數名稱,後續請求將要引用到的變數名,如填寫的是:user_id,後面的引用方式是${user_id}
-正則表示式:提取內容的正則表示式,相當於lr中的關聯函式
-() 小括號括起來的部分就是要提取的內容,對於自己要提取的內容要用小括號括起來
-. 點號表示匹配任何字串
- + 加號表示匹配一次或多次
- ? 表示 非貪婪 匹配第一個匹配項後停止
模板:$$引用起來,如果在正則表示式中有多個正則表示式(多個小括號括起來的東東),則可以是$2$,$3$等等,表示解析到的第幾個值給user_id。例如 $1$表示匹配到的第一個值。
匹配數字:0代表隨機取值,-1代表所有值,此時結果是一個數組,其餘正整數代表第幾個匹配的內容提取出來。如果匹配數字選擇的是-1,還可以通過${user_id_1}的方式來取第一個匹配的內容,${user_id_2}來取第2個匹配的內容。
預設值:正則表示式匹配失敗時,取的值。
問題1:(.+?) 與 (.*?)區別
(.+?) 匹配一個以上
(.*?)匹配0個及以上,要取的值是空值的時候可以取到。
比如: labelld:""; 要取labelled的值,使用(.+?)匹配不到值,使用(.*?)就可以取到值 空;對應的寫法為label:"(.*?)";
問題2:一個表示式匹配多個引數,返回的是一個一維陣列
呼叫方法:
${list_g1} ${list_g2}
${list_ALL} 獲取全部的值
問題3:引數匹配出來的是一個二維陣列怎麼獲取值,匹配數字填寫-1 代表獲取所有的值
看到那除錯取樣器:
則變數名稱就是feeItemId_1_g1,在其他請求介面中引用${feeItemId_1_g1}.