我正在制定 JMeter 测试计划,从 JSON 响应中提取各种值。该计划要求我执行依赖于提供给 ForEach 控制器的动态值的删除操作。我使用 JSON JMESPath 来获取生成这些动态值所需的出现次数。但是,当我在 ForEach 控制器的“循环结束索引(包含)”字段中使用此变量时,循环仅运行几次,然后在剩余迭代中失败。
以下是 JSON 响应的示例:
"companyRecords" :[
{
"employeeRecord": [
{
"employeeid" : "1234",
"employeename" : "Joe",
},
{
"employeeid" : "5678",
"employeename" : "Matthew",
}
{
"employeeid" : "1120",
"employeename" : "David",
}
],
"joiningMonth" : "April",
"employmentType" : "FullTime"
}
],
JMESPath Extractor 中的 JMESPath 表达式:
length(companyRecords[].employeeRecord[].employeeid)
变量名称为NoOfRecords。 在当前实例中,这给了我 3 的计数。我将其用作 Foreach 控制器中的变量,如下所示。
input variable prefix: employeeid
start index for loop (exclusive) : 1
End index for loop (inclusive) : ${NoOfRecords}
Output variable name: employeeid
上面的 foreach 循环仅适用于 2 次迭代,而不是第三次迭代,我尝试将 JMESPath 中的起始索引设置为 0,但仍然给出 403 错误。
有办法让它发挥作用吗?预先感谢!
您的问题包含答案:
start index for loop (exclusive) : 1
End index for loop (inclusive) : ${NoOfRecords}
它将针对 2 和 3 个值迭代 2 次。所以你需要使用 0 而不是 1 作为循环的起始索引
如果您使用以下 JSON JMESPath Extractor 配置,将会更容易:
它将生成以下变量:
employeeid_1=1234
employeeid_2=5678
employeeid_3=1120
employeeid_matchNr=3
因此您将能够设置ForEach Controller,就像这样简单: