在Groovy JSR223 Sampler

时间:2018-05-01 16:52:45

标签: groovy jmeter jsr223

我有一个简单的循环控制器,一个Counter配置元素和一个运行Groovy代码的JSR223 Sampler。我的计数器设置为从0开始,递增1到最大值3,并设置为名为' idx'的变量。

在我的JSR223 Sampler中,我使用log.info(${idx});记录idx的值 - 它总是打印第一个迭代值(在我的情况下为0),用于每次循环迭代。

我禁用了这个JSR223采样器并添加了一个BeanShell采样器,执行相同的日志语句log.info(${idx});,并且它正在递增 - 我得到迭代的值为0,1,2。

我需要获取一些JSON,将它们映射到对象,进行一些调整,然后将它们映射回JSON。 JSONParser,JSONObject和JSONArray类似乎在BeanShell Sampler中工作,但我对Groovy的JsonSlurper和JsonBuilder类更加熟悉,并且更愿意使用它们。

如果这样做有所不同,所有这些步骤都在测试片段中。有人有主意吗?这是一个错误吗?

1 个答案:

答案 0 :(得分:2)

从不直接在脚本中引用JMeter Function or Variables,使用"参数"这部分就像:

JMeter Groovy Parameters

或者使用vars简写代表JMeterVariables类实例,如:

log.info(vars.get('idx'))

JMeter Groovy Vars Print Value

原因在于:

  • 函数或变量可能会解决导致编译失败或意外行为的问题
  • 引用变量和/或函数可防止缓存已编译的Groovy脚本,从而对性能产生负面影响
  • 引用功能和/或变量可能与Groovy GString Template
  • 冲突

有关在JMeter测试中使用带有Apache Groovy - Why and How You Should Use It的Groovy脚本的详细信息,请参阅JSR223 Elements文章。