使用JMeter的JSON提取器:透過遞迴下降查詢,從介面響應中提取特定欄位

查拉图斯特拉面条發表於2024-03-04

  在介面測試中,我們經常需要從返回的JSON資料中提取特定欄位以便後續使用。JMeter提供了JSON提取器,可以幫助我們實現這一目標。本文將介紹如何使用JMeter的JSON提取器透過遞迴下降查詢的方式從介面響應中提取特定欄位,並透過示例解釋JSON表示式中 ".." 的邏輯。

1. 示例介面響應結果:

{
    "data": [{
        "code": "2676e33735cf4ca1a8a6b079da24fad0",
        "name": "報銷管理"
    },
    {
        "code": "91b398813a39461ea8389e883dea4861",
        "name": "財務核算"
    },
    {
        "code": "a1b29fc6ff86460a81959d8d06ea13dd",
        "name": "憑證金額校驗"
    }]
}

2. 步驟:

2.1 新增JSON提取器:

  在你的HTTP請求之後,新增一個JSON提取器。JSON提取器可以在JMeter的執行緒組下的HTTP請求中找到。

2.2 配置JSON提取器:

  • "變數名":輸入一個變數名稱(例如,提取的code將儲存在這個變數中,比如 "extractedCode")。
  • "JSON路徑表示式":這裡我們要提取 "name" 為 "憑證金額校驗" 的 "code"。我們使用JSON路徑表示式來指定要提取的欄位。

  JSON路徑表示式如下:

$..[?(@.name=='憑證金額校驗')].code

  在這個表示式中,"$.." 表示遞迴下降查詢,而不僅限於當前層級的子元素。它可以檢索所有層次的子元素,用來查詢具有特定屬性的所有巢狀物件。在例子中,它會匹配所有名為 "憑證金額校驗" 的物件,並提取它們的 "code" 值。

2.3 使用提取的值:

  在接下來的請求或其他操作中,你可以使用${extractedCode}來引用提取出的值。

透過以上步驟,JMeter能夠輕鬆提取JSON響應中符合條件的欄位,並將其儲存在指定的變數中供後續使用。

這樣,我們就可以利用JMeter的JSON提取器方便地從介面響應中提取所需的欄位,以支援更復雜的測試或驗證場景。

相關文章