用Groovy处理JMeter变量

733 阅读2分钟

本来没打算写这个系列的,又看了看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”,禁止第三方(腾讯云除外)转载、发表。

技术类文章精选

无代码文章精选