2017-08-15 123 views
1

我在setUp线程组下有一个BeanShell PostProcessor。 我把ArrayList中进入“bsh.shared”命名空间,如:JMeter - 如何在单个线程组中循环“bsh.shared”ArrayList?

List personIdsList = new ArrayList(); 
... 
bsh.shared.personIds = personIdsList; 

我知道怎么读通过__BeanShell功能价值为:

${__BeanShell(bsh.shared.personIds)} 

我想通过这个数组中循环其他线程组。 ($ {} PERSONID - 它应该从列表迭代值)

enter image description here

你能不能,请告诉我该怎么做?

谢谢!

回答

1

最简单的方法将使用While Controller与像Counter测试元件一起:

  1. 添加在控制器到您的第二个线程组,并把下面的表达式为“条件”区域:

    ${__BeanShell(Integer.parseInt(vars.get("counter")) < bsh.shared.personIds.size()-1,)} 
    
  2. 将计数器添加为While控制器的子项并对其进行如下配置:

    • 开始:0
    • 增量:1
    • 最大:${__BeanShell(bsh.shared.personIds.size()-1,)}
    • 参考名称:counter
  3. 请参阅“当前”人ID为${__BeanShell(bsh.shared.personIds.get(Integer.parseInt(vars.get("counter"))),)} 在需要

演示: JMeter Beanshell Counter Demo

+0

非常感谢您的解决方案! 这是非常有帮助的,但我有一个问题。 在第1次迭代期间,计数器值未知。有没有解决方案? – yarafed