JMeter解析JSON內容,動態取得變數
主題: |
JMeter解析JSON內容,動態取得變數 |
文章簡介: |
使用JSON Extractor解析JSON內容,取得下個動作的參數值 |
作者: |
李佳樺 |
版本/產出日期: |
V1.0/2017.08.31 |
1. 前言
以JSON作為數據格式的Rest API越來越常用來作數據交互的方式,本文將介紹如何使用JMeter內建 JSON Extractor解析JSON內容取值,作為下個動作的變數
2. 目的
動態取得變數值,操作更符合測試情境
3. 開始前準備
先去下載JMeter
http://jmeter.apache.org/download_jmeter.cgi
此文使用JMeter 3.2版本 (java 1.8)
4. 設定腳本
腳本說明:
呼叫測試系統的Rest API,首先都需先作登入,通過驗證後取得Token,
再以取得的Token當Key,才可再去叫其他API作相關動作。
步驟1:呼叫登入API,取得Key:token
步驟2:呼叫查詢API,使用步驟1取得token呼叫
步驟3:取出步驟2 的response放到多個變數值
5. 實作
步驟1:呼叫登入API,取得Key:token
在「Http要求(Http Request)」登入API按右鍵,點選「新增\後置處理器\JSON Extractor」
JSON Extractor設定如下:
[1] Variable names例如設定成token
[2] JSON Path expressions
如測試API回傳格式為例:取得token,寫法為$.result.token
登入API回傳response json格式(測試數據)如下:
步驟2:呼叫查詢API,使用步驟1取得token變數值呼叫
帶入token改用變數方式代入,替換成${token}
執行結果如下:
步驟3:取出步驟2 的response放到多個變數值中
response JSON格式(測試數據)如下:
取出json資料中所有codeCde的值
[1] Variable names:ex. codeCde 設定變數名稱
[2] JSON Path expressions: ex. $..codeCde 表示取出Json資料中所有codeCde的值
[3] Match No. (0 for Random): 設成-1 (之後取值就可用${codeCde_1}, ${codeCde_2}…取值)
[4] Compute concatenation var (suffix _ALL): 取出所有codeCde的值
${codeCde_1}, ${codeCde_2}, ${codeCde_2}…取值
成功取得步驟2的codeCde的值
6. 參考來源
了解JsonPath 語法
https://github.com/json-path/JsonPath
https://www.blazemeter.com/blog/api-testing-with-jmeter-and-the-json-extractor
這個真好用。