Jmeter 使用Json提取請求數據-2


在接口測試中有一個這樣的場景:業務接口需要用到登錄token;下個接口需要用到前個接口返回值作為參數,該怎么實現?

首先先看下登錄、業務接口,本文用的jmeter版本為5.4.1

 

一、json提取器設置變量獲取數據

1、先添加登錄接口,運行查看響應結果

 

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

 

 

 

 2、右鍵登錄請求-->后置處理器-->添加“JSON提取器”

JSON提取器說明:

Apply to:應用范圍

Names of created variables :接收值的變量名,自定義,多個變量用分號分隔 

JSON Path expression json path表達式,也是用分號分隔 

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

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

Default Values: 缺省值,匹配不到值的時候取該值,可寫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)運行結果查看

 

 原文:https://www.cnblogs.com/datacenter/p/15043104.html?share_token=7689bffe-9368-486e-a449-4c07451d64ce


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM