天天看點

『動善時』JMeter基礎 — 36、JMeter接口關聯【正規表達式提取器】

目錄

  • 1、正規表達式提取器介紹
  • 2、正規表達式提取器界面詳解
  • 3、正規表達式提取器的使用
    • (1)測試計劃内包含的元件
    • (2)請求一界面内容
    • (3)正規表達式提取器界面内容
    • (4)請求二界面内容
    • (5)檢視結果
  • 4、總結
  • 5、正規表達式簡單說明

1、正規表達式提取器介紹

如果有這樣的情況:一個完整的操作流程,需要先完成某個操作,獲得某個值或資料資訊,然後才能進行下一步的操作,也就是常說的接口關聯,将上一個請求的響應結果作為下一個請求的參數。

在JMeter中,可以利用正規表達式提取器來幫助我們完成這一動作。

2、正規表達式提取器界面詳解

添加正規表達式提取器元件操作:

選中“取樣器”右鍵 —> 添加 —> 後置處理器 —> 正規表達式提取器

界面如下圖所示:

『動善時』JMeter基礎 — 36、JMeter接口關聯【正規表達式提取器】

下面是正規表達式提取器元件的詳細說明:

  • 名稱:正規表達式提取器元件的自定義名稱,見名知意最好。
  • 注釋:即添加一些備注資訊,對該正規表達式提取器元件的簡短說明,以便後期回顧時檢視。

(1)

Apply to

:作用範圍(傳回内容的取值範圍)

  • Main sample and sub-samples

    :作用于父節點的取樣器及對應子節點的取樣器。
  • Main sample only

    :僅作用于父節點的取樣器。
  • Sub-samples only

    :僅作用于子節點的取樣器。
  • JMeter Variable Name to use

    :作用于JMeter變量(輸入框内可輸入JMeter的變量名稱),從指定變量中提取需要的值。

(2)

Field to check

:要檢查的響應字段

  1. 主體:響應封包的主體,最常用。
  2. Body(unescaped)

    :是替換了所有的HTML轉義符的響應主體内容,注意HTML轉義符處理時不考慮上下文,是以可能有不正确的轉換,不太建議使用。(即:替換了轉義碼的Body部分)
  3. Body as a Document

    :從不同類型的檔案中提取文本,注意這個選項比較影響性能。
  4. Response Headers

    :從響應頭資訊中提取資料,如果你使用中文語言的JMeter,會看到這一項是資訊頭,這是中文翻譯問題,應以英文為準。
  5. Request Headers

    :從請求頭資訊中提取資料。
  6. URL

    :從請求URL中提取資料。
  7. 響應碼(

    Response Code

    ):提取響應狀态碼,比如:200、404等。
  8. 響應資訊(

    Response Message

    ):響應資訊中提取資料。

(3)第三部分内容

  • 引用名稱(

    Name of created variable

    ):定義提取值的引用變量名稱。
  • 正規表達式(

    Regular Expression

    ):用于提取值的正規表達式。
  • 模闆(

    Template ($i$ where iis capturing group number, starts at 1)

    ):正規表達式的提取模式。如果正規表達式有多個提取結果,則結果是數組形式,模闆為

    $1$,$2$

    ,表示把解析到的第幾個值賦給變量,從1開始比對,以此類推。若隻有一個結果,則隻能是

    $1$

  • 比對數字(0代表随機):正規表達式比對資料的結果可以看做一個數組,表示如何取值:0代表随機取值,正數n則表示取第n個值,比如1代表第一個,2代表第二個,以此類推。負數則表示提取所有符合條件的值,如-1。
  • 預設值(

    Default Value

    ):比對失敗時候的預設值;通常用于後續的邏輯判斷,一般通常為特定含義的英文大寫組合,比如:ERROR等。
  • Use empty defau't value

    :使用空值為預設值。

3、正規表達式提取器的使用

需求:

  1. 通路網易官網,擷取title值。
  2. 将title值放入百度搜尋框,進行搜尋。

(1)測試計劃内包含的元件

添加元件操作步驟:

  1. 建立測試計劃。
  2. 建立線程組:

    選中“測試計劃”右鍵 —> 添加 —> 線程(使用者) —> 線程組

  3. 線上程組下,添加取樣器“HTTP請求”元件:

    選中“線程組”右鍵 —> 添加 —> 取樣器 —> HTTP請求

  4. 在取樣器下,添加後置處理器“正規表達式提取器”元件:

    選中“取樣器”右鍵 —> 添加 —> 後置處理器 —> 正規表達式提取器

  5. 線上程組下,添加監聽器“察看結果樹”元件:

    選中“線程組”右鍵 —> 添加 —> 監聽器 —> 察看結果樹

提示:需要重複添加的元件這裡不重複描述。

最終測試計劃中的元件如下:

『動善時』JMeter基礎 — 36、JMeter接口關聯【正規表達式提取器】

點選運作按鈕,會提示你先儲存該腳本,腳本儲存完成後會直接自動運作該腳本。

(2)請求一界面内容

非常簡單的Get請求,之前說了很多次了,這裡就不做解釋了。

界面内容如下圖所示:

『動善時』JMeter基礎 — 36、JMeter接口關聯【正規表達式提取器】

(3)正規表達式提取器界面内容

我們在編輯正規表達式提取器元件之前,一般先請求一下需要提取傳回資料的接口。

因為我們需要先檢視一下,需要提取的資料在什麼位置,如下圖所示:

『動善時』JMeter基礎 — 36、JMeter接口關聯【正規表達式提取器】

然後選擇

RegExp Tester

視圖模式,先手動編寫正規表達式,看看是否能夠取到需要的資料。

如下圖所示:

『動善時』JMeter基礎 — 36、JMeter接口關聯【正規表達式提取器】

之後我們就可以編寫正規表達式提取器元件界面了,如下:

編寫引用名稱、正規表達式、選擇第幾個模版,比對資料選擇。

『動善時』JMeter基礎 — 36、JMeter接口關聯【正規表達式提取器】

正規表達式提取器元件提取出來的資料,會存儲線上程變量中,供其他後續接口使用。

(4)請求二界面内容

填寫接口的基本請求資訊,然後把正規表達式提取器提取出來的資料,作為參數化變量應用到請求中。

如下圖所示:

『動善時』JMeter基礎 — 36、JMeter接口關聯【正規表達式提取器】

(5)檢視結果

我們可以看到再第二個請求中,拿到了第一個請求提取出來的資料“網易”。

如下圖所示:

『動善時』JMeter基礎 — 36、JMeter接口關聯【正規表達式提取器】
提示:可以添加

Debug PostProcessor

(調試後置處理器),或者

Debug Sampler

(調試取樣器),來檢視正規表達式提取器中,提取出的内容是否正确。

注意:正常跑用例時删除或禁用它們。

4、總結

正規表達式提取器可以用于對任何文本的提取。提取完參數後,相當于把參數以

key-value

的形式放到參數池,以便後面的請求使用。

注意:不能超前引用。

正規表達式提取器和XPath提取器的差別:

  1. 正規表達式提取器可以用于對頁面任何文本的提取,提取的内容是根據正規表達式在頁面内容中進行文本比對;
  2. XPath提取器則可以提取傳回頁面任意元素的任意屬性;
  3. 如果需要提取的文本是頁面上某元素的屬性值,建議使用XPath Extractor;
  4. 如果需要提取的文本在頁面上的位置不固定,或者不是元素的屬性,建議使用正規表達式提取器。

5、正規表達式簡單說明

正規表達式(Regular Expression):使用正規表達式解析響應結果,

()

表示提取字元串中的部分值,請不要使用

||

,除非你本身需要比對這個字元。

  1. .

    代表比對任意一個字元。
  2. []

    表示取值範圍。

    比如:[0-9]代表比對0-9之間任意一個數字。

    [a-z]代表比對a-z之間任意一個字元。

    [A-Z]代表比對A-Z之間任意的一個字元。

  3. +

    :比對前面的子表達式一次或多次。
  4. ?

    :代表比對一次或一次也沒有。這個符号還有特殊的用法,當放到

    *

    号後面的時候,辨別取到的資料是非貪婪的。

    說明:貪婪與非貪婪模式是兩種不同的表達式比對行為,貪婪模式在整個表達式比對成功的前提下,盡可能多的比對,而非貪婪模式在整個表達式比對成功的前提下,盡可能少的比對,即比對第一個。

  5. *

    :比對前面的子表達式零次或多次。
  6. \d

    :比對一個數字字元,等價

    于[0-9]

  7. \w

    :比對包括下劃線的任何單詞字元,等價于

    [A-Za-z0-9_]

  8. {3}

    :代表比對3次,示例如下:

    [1-9][0-9]{4,14}

    :代表前面的子表達式,至少比對4次,最多不超過14次。

    1[358]\d{9}

    :比對手機号。

    [a-zA-Z0-9_]+@[a-zA-Z0-9]+\.[a-zA-Z]+

    :比對郵箱。
提示:常用正規表達式查詢:http://tool.oschina.net/uploads/apidocs/jquery/regexp.html

繼續閱讀