本來沒打算寫這個系列的,又看了看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”,禁止第三方(騰訊雲除外)轉載、發表。
技術類文章精選
- Linux性能監控軟件netdata中文漢化版
- 性能測試框架第三版
- 如何在Linux命令行界面愉快進行性能測試
- 圖解HTTP腦圖
- Java並發BUG基礎篇
- Java並發BUG提升篇
- 性能測試中圖形化輸出測試數據
- 壓測中測量異步寫入接口的延遲
- 多種登錄方式定量性能測試方案
