当前位置: 首页 > 面试题库 >

JMeter - 用户定义的计数器不会为循环递增

荆利
2023-03-14
问题内容

我对JMeter还是很陌生,我试图
使用循环控制器和JSR223
PostProcessor 来增加用户定义变量中预定义的计数器变量,但它似乎运行不佳。我查看了有关
JMeter循环的各种示例和计数器示例,以解决此问题,但配置元素Counter也未随循环增加。有人可以让我知道我做错了吗?

这就是我尝试使用后处理器递增计数器的方式,并且日志显示计数器未针对每个循环递增。我想将计数器提高到5:

这就是我尝试使用后处理器递增计数器的方式,并且日志显示计数器未针对每个循环递增。 我想把计数器提高到5

[编辑]我不确定我为什么要使用$ {counter}进行测试。我试图将另一个变量中的计数器变量评估为’$ { V(transaction _ $ {counter})}’,因为这需要附加到文本文件中。例如,如果transaction_3的值为“ 110001”,如果我
要附加’$ {
V(transaction _’+ vars.get(’counter’)+’)}’,则存储的文本将显示
“ transaction_3”,如果我’$ {__ V(transaction _ $ {counter})}’,然后我得到存储在文本文件中的正确值“ 110001”,而在下一次迭代中,计数器不递增。有没有可能解决此问题的方法?

这就是我在变量中使用变量的方式,它表明值未更改,因为计数器未更改。

这个图像就是我尝试使用vars.get()的方式,它表明它只是放置变量名称而不是评估每个项目的值。


问题答案:

According to JSR223
Sampler

documentation:

JMeter processes function and variable references before passing the script
field to the interpreter, so the references will only be resolved once.
Variable and function references in script files will be passed verbatim to
the interpreter, which is likely to cause a syntax error. In order to use
runtime variables, please use the appropriate props methods, e.g.

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

So amend the last line of your script to look like:

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

Demo:

还请注意,它使用起来容易得多:

  1. Counter test element or __counter() function, check out How to Use a Counter in a JMeter Test article for more details
  2. 循环控制器公开${__jm__Loop Controller__idx}JMeter变量,该变量保存当前迭代次数


 类似资料:
  • 我正在尝试编写一个简单的程序,它将使用Scanner进行输入并输出最低数字、最高数字以及它们的平均值。但我不希望数字低于0或大于100。我有输出最小值、最大值和平均值的程序,它会告诉我是否输入了小于0或大于100的数字,但它仍然将其视为for循环中的“旋转”。我基本上希望程序返回到上一个数字,而不是在输入错误数字时继续在for循环中前进。有什么建议吗?谢谢!

  • 我正在遍历一个LinkedHashMap并递增I counter,下面是我使用for循环的方式

  • 问题内容: 在下面的示例代码中,是否真的需要counter = 0,还是有更好,更多的Python方法来访问循环计数器?我看到了一些与循环计数器有关的PEP,但它们要么被延迟要么被拒绝(PEP 212 和PEP 281)。 这是我的问题的简化示例。在我的实际应用程序中,这是通过图形完成的,整个菜单必须每帧重新绘制一次。但这以易于复制的简单文本方式进行了演示。 也许我还应该补充一点,我正在使用Pyt

  • 人们到底是如何从JMeter发送请求的。给定这个配置是否意味着JMeter将创建200个线程,并在循环中发送并发请求20次。我假设这意味着每个线程阻塞,直到上一个请求完成,并发送下一个请求,并且每个线程执行该过程20次。 假设我有一个示例请求a,num threads=2,loop count=5,我设想工作流如下所示 在时间t0线程1->向目标服务器发送一个 在时间t0线程2->向标记服务器发送

  • 问题内容: 我有以下简单脚本,在其中运行循环并希望维护。我无法弄清楚为什么计数器没有更新。是由于创建了subshel​​l导致的吗?我该如何解决呢? 问题答案: 首先,您没有增加计数器。更改成或将增加它。 其次,在您推测时将子shell变量反向传播给被调用者比较困难。子shell中的变量在子shell外部不可用。这些是子进程本地的变量。 解决此问题的一种方法是使用临时文件存储中间值:

  • 此方法重复读取命令并执行它们,直到游戏结束。完成的变量为true时,表示玩家/用户点击了退出并想要结束游戏——从而退出循环并执行到方法结束。 但我观察到循环有一种奇怪的行为。它循环得非常好(省略以下行时显示stopWatch.getTime()的连续计数: 但是当我把它们放回去时,它会停止显示秒表的连续递增时间,因为它会朝着时间限制增加(在这一点上,它应该停止)。即使玩家没有输入任何命令或输入。