JMeter ForEach 控制器,其中包含未迭代的对象列表
JMeter ForEach controller with list of Objects not being iterated over
以下是我的测试计划。 ForEach 控制器应该循环遍历存储在用户定义变量 "userTaskIds" 中的所有任务 ID。我尝试用定义列表
两者 def myList = [] and List<Object> listId = new ArrayList<Object>();
。在这两种情况下,它都无法循环。
ForEach 控制器不使用 "userTaskIds" 变量循环。在这里,我在数字之前尝试 with/without "add "_" ?"
以下是调试采样器结果和日志视图面板
日志视图
这是因为 ForEach Controller 期望这样:
- userTaskIds_1
- userTaskIds_2
- ...
和
- userTaskIds_matchNr = 出现次数
因此在您的 JSR223 脚本中,您需要在每次循环迭代中执行此操作:
将responseJSON.each替换为
responseJSON.eachWithIndex {
it, iterationLoop ->
然后
vars.put("userTaskIds_"+(iterationLoop+1), ""+it.id)
其中 iterationLoop 必须从 1 开始并递增。
循环后:
vars.put("userTaskIds_matchNr", Integer.toString(myList.size()));
以下是我的测试计划。 ForEach 控制器应该循环遍历存储在用户定义变量 "userTaskIds" 中的所有任务 ID。我尝试用定义列表
两者 def myList = [] and List<Object> listId = new ArrayList<Object>();
。在这两种情况下,它都无法循环。
以下是调试采样器结果和日志视图面板
日志视图
这是因为 ForEach Controller 期望这样:
- userTaskIds_1
- userTaskIds_2
- ...
和
- userTaskIds_matchNr = 出现次数
因此在您的 JSR223 脚本中,您需要在每次循环迭代中执行此操作:
将responseJSON.each替换为
responseJSON.eachWithIndex {
it, iterationLoop ->
然后
vars.put("userTaskIds_"+(iterationLoop+1), ""+it.id)
其中 iterationLoop 必须从 1 开始并递增。
循环后:
vars.put("userTaskIds_matchNr", Integer.toString(myList.size()));