使用beanshell更新Jmeter变量


问题内容

尝试使用bean脚本更新Jmeter变量时遇到了问题。我已经阅读了本手册,

  1. 更新变量使用 vars.put("variable", "newValue");
  2. 您输入的值只能是一个字符串。

现在我要使用以下代码:

String x = vars.get("counter");

int y = Integer.parseInt(x);
y = y + 1;

String z = "" + y;

vars.put("counter", z);
// print(z);

我的变量计数器是一个值为1的用户参数(之前作为用户定义的变量尝试过)。我可以看到我的脚本正在工作,因为print(z)返回值2。现在我也可以说我的变量计数器在用户参数,以便当我再次运行它时,它给我的值为3。事实并非如此:该值未更新,因此我运行脚本的所有程序都向我返回值2。

有人可以帮助我吗?


问题答案:

我在您的脚本中看不到任何问题。它应该工作正常。

请记住,所有这些beanshell变量都是特定于线程的。即,如果Thread1将其增加到2,则Thread2的“ counter”的当前值仍为1。

我认为您只需一次迭代就可以为更多线程/用户运行测试。这就是为什么它为所有用户打印2的原因。如果您有更多的循环计数/将其设置为永久,则计数器将递增。

如果jmx文件仍然无法解决问题,则可以上载。


编辑:

我刚刚检查了您的jmeter测试。即使在Beanshell Sampler中将计数器值增加1,Yolu仍将计数器设置回1 User Parameters。去掉它。删除它们后,对我来说效果很好。