1. 程式人生 > 其它 >JMeter測試HTTP介面問題記錄02-正則提取器

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}.