JMeter中多個線程組之間的變量調用


測試背景:測試時,需要測試某個接口A的並發極限值。而這個接口A的一些參數依賴於其他接口B,B和A部署在一台機器上,依賴接口B不需要並發,以免影響目標接口A。

測試分析:在使用JMeter時,一個線程組下的接口,是受整個線程組的並發數控制的,所以這2個接口不能在一個線程組中。那么就要使用2個線程組來實現,不同線程組控制不同並發數。使用時,第2個線程組就需要調用第一個線程組的參數,問題點在這里。

解決辦法:需要使用jmeter自帶函數__setProperty來實現,成為全局變量。

解決步驟:1、線程組1中使用接口B,通過B的返回值,使用json提取器,獲取到對應的參數值。

                  2、參數通過“BeanShell 取樣器”,利用腳本,變成全局變量

                  3、下面的線程組使用“${__property(參數)}”來調用,這樣就傳遞給第2個線程組中的接口A了.

                  4、使用時,測試計划需要勾選:需要獨立運行每個線程組

 

 

具體實現截圖:

 1、第一個線程組

①請求返回值是JSON格式,通過json提取器,獲取返回值中的字段。$代表返回值,$.data.token就是2層嵌套中的token值

 

 ②使用“BeanShell 取樣器”,把json提取器中獲得的這些值變為全局變量。JMeterUtils.setProperty("參數", "值") 全局變量賦值

 

 里面使用的腳本是:

import org.apache.jmeter.util.JMeterUtils;

JMeterUtils.setProperty("name","${token}");

JMeterUtils.setProperty("rname","${rtoken}");  

 2、第2個線程組,主要是調用,把原來調用時常用的${參數}改成“${__property(參數)}” 即可。  

下面這個截圖中,參數名為name,即上面設為的全局變量name

 

 

寫在最后:開始也試過“BeanShell斷言” 來獲取變量。這個也是可以的,但在跑並發時,會有個別報錯的,沒有取到全局變量值。所以推薦使用“BeanShell 取樣器”

 

 

 

參考博客:https://www.cnblogs.com/VashGu927/p/7651150.html   和  https://blog.csdn.net/weixin_42596342/article/details/84673412       

 


免責聲明!

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



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