在接口測試中有一個這樣的場景:業務接口需要用到登錄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