1. 程式人生 > 其它 >jmeter介面之json提取器應用

jmeter介面之json提取器應用

在介面測試中有一個這樣的場景:業務介面需要用到登入token;下個介面需要用到前個介面返回值作為引數,該怎麼實現?

首先先看下登入、業務介面,本文用的jmeter版本為5.4.1

一、json提取器設定變數獲取資料

1、先新增登入介面,執行檢視響應結果

json path表示式怎麼寫?例如我要獲取token,可寫$data.token,$表示根元素,然後一級一級屬性往下去找,先找到data,再往下子節點找到token;也可以寫成$..token,直接從根元素去遞迴查詢token。

2、右鍵登入請求-->後置處理器-->新增“JSON提取器”

JSON提取器說明:

Apply to:

應用範圍

Namesofcreatedvariables:接收值的變數名,自定義,多個變數用分號分隔

JSONPathexpressionjson path表示式,也是用分號分隔

MatchNo.(0 for Random)0表示隨機;n取第幾個匹配值;-1匹配所有。若只要獲取到匹配的第一個值,則填寫1

Compute concatenation var(suffix_ALL):如果找到許多結果,則外掛將使用','分隔符將它們連線起來,並將其儲存在名為<variable name>_ALL的var中

DefaultValues:預設值,匹配不到值的時候取該值,可寫error。

為了檢查通過json提取器是否正常獲取到值,可新增Debug PostProcessor來檢查。

3、新增查詢介面,將json提取器獲取到的值,進行變數引用

點選執行介面,執行成功

二、json提取器設定一個變數獲取多個數據

1、例如從“預設頁面查詢介面”返回中獲取所有name

如果想要獲取這裡所有的name,json路徑表示式怎麼寫?$..name或者$.data.records[*].orgName

2、新增json提取器,獲取所有name資訊

新增Debug PostProcessor來除錯用,正常跑用例刪除或禁用它。可檢視到獲取到了所有name值。通過name_1,....name_10可得到每一個name。

3、將獲取到的每一個name迴圈進行查詢

1)新增迴圈控制器,設定迴圈次數

2)在迴圈控制器之下新增“輸入查詢介面”,並做以下設定

因為也是業務介面,需要呼叫token,所以這裡也加一下。

因為要把JSON提取器中匹配到的name_1,....name_10迴圈傳遞給“使用者流水記錄”,

__counter為jmeter自帶的一個計數函式,${__counter(,)}引用這個函式,每執行1次+1,從1開始;

name_${__counter(,)}執行第1次name_1,執行第2次name_2,以此類推,直到執行到迴圈次數name_10

__V為jmeter自帶的一個巢狀變數函式,執行第1次name_${__counter(,)}為name_1,${__V(name_${__counter(,)},)}則為${name_1},值10;以此類推,一直迴圈到${name_10}

3)執行結果檢視