深入理解JMeter中的JSON Extractor

查拉圖斯特拉麵條發表於2023-11-14

Apache JMeter是一款出色的開源效能和功能測試工具,這款工具提供了豐富的功能和強大的擴充套件性,可以應對各種複雜的測試需求。當我們在進行介面測試時,經常會遇到需要從介面響應中提取資訊並在後續請求中使用的情況。這時候,JMeter中的JSON Extractor就派上了用場。

JSON Extractor是JMeter中的一個Post Processor元件,它可以根據JSON Path表示式從HTTP請求的響應結果中提取需要的資訊。接下來,我們將透過一個具體的例子,詳細介紹如何使用JSON Extractor。

假設我們的HTTP請求返回瞭如下的JSON資料:

{
  "dataDetail": [
    {
      "role_id": 1,
      "role_code": "132001",
      "role_name": "Administrator"
    },
    {
      "role_id": 2,
      "role_code": "132002",
      "role_name": "User"
    }
  ]
}

我們的任務是提取role_code為"132002"的物件的role_id。首先,在對應的HTTP請求下新增一個JSON Extractor,配置如下:

  • Names of created variables:命名提取欄位的變數名。在這個例子中,我們輸入my_role_id

  • JSON Path Expressions:輸入對應的JSON Path表示式。在這個例子中,我們輸入$.dataDetail[?(@.role_code=="132002")].role_id

  • Match No:輸入匹配數字。在這個例子中,我們只關心第一個匹配的結果,因此輸入1

  • Default Values:輸入預設值。在這個例子中,我們可以輸入NOT_FOUND作為預設值。

下面是具體的配置:

Names of created variables: my_role_id
JSON Path Expressions: $.dataDetail[?(@.role_code=="132002")].role_id
Match No: 1
Default Values: NOT_FOUND

配置完成後,JSON Extractor會在HTTP請求的響應結果中查詢符合JSON Path表示式的值,並將找到的值儲存在我們指定的變數中。在這個例子中,如果role_code為"132002"的物件存在,那麼my_role_id就會儲存這個物件的role_id;如果不存在,那麼my_role_id的值就會是我們指定的預設值NOT_FOUND

最後,在後續的請求中,我們就可以透過${my_role_id}的形式來使用這個提取出來的role_id了。

總的來說,JMeter的JSON Extractor是一款極其強大的工具,只要我們正確地使用,就能輕鬆地從複雜的JSON響應中提取我們需要的資訊。

相關文章