jmeter ForEach控制器可用于迭代具有相同前缀的变量,如
myVar_1
myVar_2
myVar_3
但在我的情况下,输入变量是字符串数组,[ "val1", "val2", "val3" ]
如何迭代数组并为每个值发送单独的请求?
答案 0 :(得分:5)
您将无法将此JSON Array提供给ForEach控制器,但您可以将转换为ForEach控制器可以理解的形式
将以下代码放入“脚本”区域:
def json = new groovy.json.JsonSlurper().parseText(vars.get("yourInputVariable"))
def counter = 1
json.each {
vars.put("myVar_" + counter, it)
counter++
}
将yourInputVariable
替换为包含JSON数组的变量的实际名称
myVar_1, myVar_2,...
一样执行“正常”配置 - 它将正常工作,因为JSR223采样器根据来自JSON阵列的数据创建相关变量。 有关详情,请参阅Parsing and producing JSON - Groovy和Groovy Is the New Black文章。
答案 1 :(得分:0)
我尝试了Dmitri的答案,但是由于 groovy 脚本仅适用于简单的字符串数组,因此基本上卡住了它。但是,我需要一个更复杂的JSON对象数组。 然后,我将脚本语言切换为 ecmascript ,并根据原始脚本编写了一个很好的旧JS,如下所示:
var jsonObject = JSON.parse(vars.get("ReportSources"));
for(var index = 0; index < jsonObject.length; index++) {
vars.put("rs_" + (index + 1), JSON.stringify(jsonObject[index]));
}
对我有用。