使用 Apache JMeter 中的正規表示式提取器進行關聯

如果需要從文字響應中提取資訊,最簡單的方法是使用正規表示式。匹配模式與 Perl 中使用的模式非常相似。我們假設我們要測試機票購買工作流程。第一步是提交購買操作。下一步是確保我們能夠使用購買 ID 驗證所有細節,購買 ID 應該在第一個請求時返回。讓我們假設第一個請求返回一個 html 頁面,其中包含我們需要提取的此類 ID:

<div class="container">
  <div class="container hero-unit">
    <h1>Thank you for you purchse today!</h1>
       <table class="table">
           <tr>
             <td>Id</td>
             <td>Your purchase id is 1484697832391</td>
           </tr>
           <tr>
             <td>Status</td>
             <td>Pending</td>
           </tr>
           <tr>
             <td>Amount</td>
             <td>120 USD</td>
            </tr>
         </table>
    </div>
</div>

這種情況是使用 JMeter 正規表示式提取器的最佳候選者。正規表示式是用於描述搜尋模式的特殊文字字串。有許多線上資源可以幫助編寫和測試正規表示式。其中一個是 https://regex101.com/

StackOverflow 文件

要使用此元件,請開啟 JMeter 選單,然後: 新增 - >後處理器 - >正規表示式提取器

StackOverflow 文件

正規表示式提取器包含以下欄位:

  • 引用名稱 - 提取後可以使用的變數的名稱
  • 正規表示式 - 表示將在文字中搜尋的字串(模式)的符號和字元序列
  • 模板 - 包含對組的引用。由於正規表示式可能包含多個組,因此它允許通過將組編號指定為$ 1 $或$ 2 $或$ 1 $$ 2 $(提取兩個組)來指定要提取的組值
  • 匹配號 - 指定將使用哪個匹配(0 值匹配隨機值/任何正數 N 表示選擇第 N 個匹配/負值需要與 ForEach 控制器一起使用)
  • 預設值 - 如果未找到匹配項,將儲存在變數中的預設值儲存在變數中。

應用於核取方塊處理髮出嵌入資源請求的示例。此引數定義正規表示式是應用於主樣本結果還是應用於所有請求,包括嵌入資源。這個引數有幾種選擇:

  • 主要樣本和子樣本
  • 僅限主要樣本
  • 僅限子樣本
  • JMeter 變數 - 斷言應用於命名變數的內容,可以由另一個請求填充

要檢查的欄位核取方塊允許選擇應用正規表示式的欄位。幾乎所有引數都是自描述的:

  • 正文 - 響應的主體,例如網頁的內容(不包括標題)
  • 正文(未轉義) - 響應的正文,替換了所有 HTML 轉義碼。請注意,處理 HTML 轉義時不考慮上下文,因此可能會進行一些不正確的替換(*此選項會嚴重影響效能)
  • Body - Body 作為文件 - 通過 Apache Tika 從各種型別的文件中提取文字(*也可能影響效能)
  • 正文 - 請求標頭 - 非 HTTP 樣本可能不存在
  • 正文 - 響應標頭 - 非 HTTP 樣本可能不存在
  • 正文 - 網址
  • 響應程式碼 - 例如 200
  • 身體 - 響應訊息 - 例如 OK

提取表示式後,可以使用$ {purchaseId}變數將其用於後續請求。

StackOverflow 文件

該表包含 JMeter 正規表示式支援的所有收縮:

StackOverflow 文件 StackOverflow 文件