在使用jmeter進行接口測試時,我們難免會遇到需要從上下文中獲取測試數據的情況,這個時候就需要引入變量了。
定義變量
- 添加->配置元件->用戶自定義的變量
- 添加->配置元件->CSV 數據文件設置(詳細見——Jmeter使用csv文件讀取測試數據)
使用變量
變量的調用方式:${變量名}
變量的作用范圍:變量可以寫入任何測試組件的任何字段中(除了TestPlan)
以博客園的接口為例:
Url: https://recomm.cnblogs.com/api/v2/recomm/blogpost/reco
HTTP Method: Post
Request:
{"itemId":11343866,"itemTitle":"Jmeter 01 Jmeter下載安裝及入門"}
Response:
[{"itemId":"8971531","title":"使用JMeter進行壓力測試","content":null,"url":"https://www.cnblogs.com/stulzq/p/8971531.html"},{"itemId":"4709031","title":"JMeter入門","content":null,"url":"http://www.cnblogs.com/s380774061/p/4709031.html"},{"itemId":"9413237","title":"Jmeter下載安裝配置及使用(windows)","content":null,"url":"https://www.cnblogs.com/fanbi/p/9413237.html"},{"itemId":"5639895","title":"Jmeter使用入門","content":null,"url":"http://www.cnblogs.com/ceshisanren/p/5639895.html"},{"itemId":"7094047","title":"JMeter入門","content":null,"url":"http://www.cnblogs.com/iceb/p/7094047.html"}]
從上下文中獲取變量
例如上面的接口,我們想要再請求一次,而request需要從上一次的響應數據中獲得,比如我們需要第一次請求的response中的itemId和title作為下一次請求的request
{"itemId":"8971531","title":"使用JMeter進行壓力測試","content":null,"url":"https://www.cnblogs.com/stulzq/p/8971531.html"}
那么就需要用到一個配置元件JSON提取器了
右鍵http請求->添加->后置處理器->json提取器
JSON提取器參數說明:
參數 | 說明 |
---|---|
Apply to | |
Main sample and sub-samples | 主sample及子sample |
Main sample only | 主sample |
Sub-samples only | 子sample |
JMeter Variable Name to use | 變量名 |
JSON Path Expression | json表達式(想要獲取的值在響應數據中的什么位置) |
Match No.(0 or Random) | 匹配第幾個,不填寫是獲取符合條件的第一個,0為隨機、N為第N個、-1為獲取所有 |
Compute comcatemation var(suffix_ALL) | 如果找到了很多結果,插件將使用','分隔符連接它們,並將其存儲在一個名為<變量名>_ALL的變量中 |
Default Values | 當沒有獲取到參數值時的默認值 |