用Groovy處理JMeter變量


本來沒打算寫這個系列的,又看了看JMeter的文檔,發現Groovy在JMeter中能發揮很多非常有趣的功能,雖然語法和API比較隱晦,但好得不多。

前面已經寫過文章介紹了Groovy斷言:用Groovy處理JMeter斷言和日志

下面介紹下一個題目:Groovy處理JMeter變量,這里的變量分為線程私有(局部)和線程共享(全局)。

線程私有

  • 首先新建一個簡單的線程組和一個簡單的請求:

請注意參數t去的是局部變量MY1的值。

  • 添加JSR223 預處理程序

腳本內容如下:

OUT. println 'FunTester'
log.error '輸出JMeter控制台錯誤'
vars.put("MY1","FunTester")
def my_var = vars.get("MY");
log.warn "輸出參數-------- ${vars} console"
log.info("222222 " + my_var);
  • 控制台輸出
2020-03-03 21:02:30,499 INFO o.a.j.t.JMeterThread: Thread started: 線程組 1-1
2020-03-03 21:02:30,517 ERROR o.a.j.m.J.JSR223 預處理程序: 輸出JMeter控制台錯誤
2020-03-03 21:02:30,518 WARN o.a.j.m.J.JSR223 預處理程序: 輸出參數-------- org.apache.jmeter.threads.JMeterVariables@14a52b54 console
2020-03-03 21:02:30,518 INFO o.a.j.m.J.JSR223 預處理程序: 222222 FunTester
  • 查看結果樹

至此已經完美搞定私有變量。

線程共享

線程共享變量的處理方法跟上一個基本一模一樣,除了對象名和方法名意外。

腳本內容如下:

OUT. println 'FunTester'
log.error '輸出JMeter控制台錯誤'
vars.put("MY1","FunTester")
def my_var = vars.get("MY1");
log.warn "輸出參數-------- ${vars} console"
log.info("222222 " + my_var);


props.put("MY",test())
log.info(props.get("MY"))

def test(){
	"funtest" + fan()
}

def fan(){
	System.currentTimeMillis()
}

這里我稍微寫了兩個方法,驗證了一下Groovy的方法是否可行

  • 參數設置

  • 查看結果樹

Groovy如何處理JMeter的變量的Demo到此結束了。


  • 鄭重聲明:文章首發於公眾號“FunTester”,禁止第三方(騰訊雲除外)轉載、發表。

技術類文章精選

無代碼文章精選


免責聲明!

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



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