JSON Extractor JsonPath JSON Jmeter

JMeter解析JSON內容,動態取得變數

李佳樺 2017/09/01 10:00:00
1724







主題

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

http://www.jianshu.com/p/56a607fc0d8f

李佳樺