使用beanshell更新Jmeter变量

尝试使用beanshell脚本更新Jmeter变量时遇到了问题。 我已按照本手册阅读了 这个主题并且都说了同样的话:

  1. 要更新变量,请使用vars.put("variable", "newValue");
  2. 您放置的值只能是String。

现在我想使用这段代码:

 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。

我认为只用一次迭代就可以为更multithreading/用户运行测试。 这就是为所有用户打印2的原因。 如果你有更多的循环计数/将其设置为永久,计数器将增加。

如果jmx文件仍然无法解决问题,您可以上传它。


编辑:

我刚检查了你的jmeter测试。 即使您在Beanshell采样器中将计数器值增加1,Yolu也会将计数器设置为1作为User Parameters一部分。 去掉它。 删除后,它对我来说很好。

把cookie管理器放在你的脚本中,你会没事的。

现在你有一个全局变量counter = 1,在一个请求中你使用局部变量counter ant将它设置为2.当另一个请求试图获取counter的值时,它获得全局值1,因为本地变量被删除。