【问题标题】:Counter variable not incrementing when accessing it in Groovy JSR223 Sampler在 Groovy JSR223 Sampler 中访问计数器变量时不会递增
【发布时间】:2018-05-02 15:53:45
【问题描述】:

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

在我的 JSR223 采样器中,我使用 log.info(${idx}); 记录 idx 的值——它总是为每次循环迭代打印第一个迭代值(在我的例子中为 0)。

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

我需要获取一些 JSON,将它们映射到对象,进行一些调整,然后将它们映射回 JSON。 BeanShell Sampler 中似乎有 JSONParser、JSONObject 和 JSONArray 类,但我更喜欢 Groovy 的 JsonSlurper 和 JsonBuilder 类,并且更喜欢使用这些类。

所有这些步骤都在一个测试片段中,如果这会有所不同的话。有人有想法么?这是一个错误吗?

【问题讨论】:

  • 您使用的是什么版本的 Jmeter?您是否尝试将其与 groovy 一起使用? String x = vars.get("idx"); log.info(x); 我的工作正常。
  • 哇,这对我有用。谢谢!

标签: groovy jmeter jsr223


【解决方案1】:

永远不要直接在脚本中引用JMeter Function or Variables,或者使用“参数”部分,例如:

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

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

原因在:

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

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

【讨论】:

    猜你喜欢
    • 2020-12-17
    • 1970-01-01
    • 2019-07-06
    • 2019-10-27
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 2019-04-05
    相关资源
    最近更新 更多