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響應中提取我們需要的資訊。