JMeter - 如何在单个线程组中循环“bsh.shared”ArrayList?

时间:2017-08-15 09:41:53

标签: performance arraylist jmeter beanshell

我在setUp Thread Group下有一个BeanShell PostProcessor。 我将ArrayList放入“bsh.shared”命名空间,如:

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

我知道如何通过__BeanShell函数读取值:

${__BeanShell(bsh.shared.personIds)}

我想在其他Thread Group中遍历这个数组。 ($ {personId} - 它应该从列表中迭代值)

enter image description here

请你告诉我该怎么做?

谢谢!

1 个答案:

答案 0 :(得分:1)

最简单的方法是将While ControllerCounter测试元素一起使用,如:

  1. 将Controller添加到第二个线程组并将以下表达式放入“条件”区域:

    ${__BeanShell(Integer.parseInt(vars.get("counter")) < bsh.shared.personIds.size()-1,)}
    
  2. 将Counter添加为While Controller的子级,并按如下方式对其进行配置:

    • 开始:0
    • 增量:1
    • 最高限额:${__BeanShell(bsh.shared.personIds.size()-1,)}
    • 参考名称:counter
  3. 将“当前”人员ID称为${__BeanShell(bsh.shared.personIds.get(Integer.parseInt(vars.get("counter"))),)}
  4. 演示: JMeter Beanshell Counter Demo