【问题标题】:JMeter - User defined counter not incrementing for a LoopJMeter - 用户定义的计数器不为循环递增
【发布时间】:2018-11-20 23:23:56
【问题描述】:

我对 JMeter 还是很陌生,我试图使用循环控制器和 JSR223 后处理器来增加用户定义变量中预定义的计数器变量,但它似乎不能正常工作。我查看了有关 JMeter 循环和计数器示例的各种示例来解决这个问题,但配置元素 Counter 也没有随着循环而增加。 谁能告诉我我做错了什么?

这是用户定义的变量计数器:

这就是我循环的方式:

这就是我尝试使用后处理器递增计数器的方式,并且日志显示计数器没有在每个循环中递增。我想让计数器达到 5:

[编辑] 我想我不清楚为什么我使用 ${counter} 来测试。我试图将另一个变量中的计数器变量评估为 '${__V(transaction_${counter})}' 因为这需要附加到文本文件中。例如,如果 transaction_3 的值为“110001”,如果我执行 '${__V(transaction_'+vars.get('counter')+')}' 追加,则存储的文本显示“transaction_3”,如果我这样做'${__V(transaction_${counter})}' 然后我得到存储在文本文件中的正确值“110001”,而在下一次迭代中计数器不会增加。有没有办法解决这个问题?

This is how I was using the variable within variable and it shows that the values are not changing because the counter is not changing.

And this image is how I am trying to do with vars.get() and it shows that it is just putting the variable name instead of evaluating the value of each item.

【问题讨论】:

    标签: groovy jmeter


    【解决方案1】:

    根据JSR223 Sampler 文档:

    JMeter 在将脚本字段传递给解释器之前会处理函数和变量引用,因此这些引用只会被解析一次。脚本文件中的变量和函数引用将逐字传递给解释器,这很可能导致语法错误。为了使用运行时变量,请使用适当的 props 方法,例如

    props.get("START.HMS");
    props.put("PROP1","1234");
    

    所以修改脚本的最后一行,如下所示:

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

    演示:

    还要注意它更容易使用:

    1. Counter 测试元素或__counter() function,查看How to Use a Counter in a JMeter Test 文章了解更多详情
    2. 循环控制器公开 ${__jm__Loop Controller__idx} JMeter 变量,该变量保存当前迭代次数

    【讨论】:

    • 非常感谢!我编辑了我的问题以更具体地解决问题!
    • 您仍然在 groovy 脚本中使用 JMeter 函数和 JMeter 变量,尽管我在回答的第一句话中告诉您不要这样做
    • 我现在看到了!谢谢!!
    【解决方案2】:

    根据 JMeter Manual Best Practices -> 16.12 JSR223 Elements

    使用 JSR 223 元素时,建议勾选 Cache compiled script if available 属性,以确保脚本编译在底层语言支持的情况下被缓存。在这种情况下,请确保脚本不使用任何使用 ${varName} 的变量,因为缓存只会采用 ${varName}. Instead use: vars.get("varName") 的第一个值`

    如果您将 log.info('${counter}') 更改为 log.info('${vars.get("counter")}') 应该可以解决问题!

    或取消选中此项:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-02
      • 1970-01-01
      • 1970-01-01
      • 2017-06-27
      相关资源
      最近更新 更多