JMeter ForEach控制器,其对象列表未在其上进行迭代

时间:2018-10-06 12:08:55

标签: groovy jmeter performance-testing jsr223 jmeter-5.0

以下是我的测试计划。 ForEach控制器应在其中循环遍历存储在用户定义的变量“ userTaskIds”中的所有任务ID。我尝试用定义列表 两者def myList = [] and List<Object> listId = new ArrayList<Object>();。在两种情况下,其循环失败。 enter image description here ForEach控制器未与“ userTaskIds”变量一起循环。在这里,我尝试使用/不使用“在数字前添加“ _”?”

enter image description here

以下是调试采样器结果和“日志”视图面板 enter image description here

日志视图

enter image description here

1 个答案:

答案 0 :(得分:1)

这是因为ForEach Controller期望这样做:

  • userTaskIds_1
  • userTaskIds_2
  • ...

还有

  • userTaskIds_matchNr =发生次数

因此,在您的JSR223脚本中,您需要在每个循环迭代中执行此操作:

替换responseJSON.each
  responseJSON.eachWithIndex {
     it, iterationLoop ->

然后

  

vars.put(“ userTaskIds _” +(iterationLoop + 1),“” + it.id)

,其中迭代循环必须从1开始并递增。

和之后循环:

  

vars.put(“ userTaskIds_matchNr”,Integer.toString(myList.size()));