![](/img/trans.png)
[英]JMeter - How to pass all the HTTP Request of my group to an if controller
[英]JMeter - How to pass Multiline response data to the ForEach Controller request
面临从一个请求响应复制多条消息并传递给 jmeter 中的 forEachContoller 请求的问题。 我尝试使用 RegEx 处理响应数据并传递给 forEachContr。 但它只传递一个值,而不是传递多个值
Jmeter_Domian
Google
Yahoo
Facebook
我想将此响应数据传递给下一个 forEachController 请求。
${Jmeter_Domian} 是我的正则表达式变量,${Jmeter_Domian1} 是我的 forEachController Output 变量。
{
"request": [
{
"Domain": "${Jmeter_Domian1}"
},
{
"Domain": "${Jmeter_Domian1}"
},
{
"Domain": "${Jmeter_Domian1}"
}
]
我已经执行了上述场景,但它正在通过
{
"request": [
{
"Domain": "Google"
},
{
"Domain": "Google"
},
{
"Domain": "Google"
}
]
但预期的反应是
{
"request": [
{
"Domain": "Google"
},
{
"Domain": "Yahoo"
},
{
"Domain": "Facebook"
}
]
任何人都可以帮助我。 谢谢!
使用不带 1 的变量名:
{
"request": [
{
"Domain": "${Jmeter_Domian}"
},
{
"Domain": "${Jmeter_Domian}"
},
{
"Domain": "${Jmeter_Domian}"
}
]
考虑将名称更改为Jmeter_Domain
您不能将 ForEach Controller 用于变量连接,它只能用于逐个迭代值。
如果要从 3 个JMeter 变量创建 JSON 变量,则需要使用任何JSR223 测试元素和Groovy语言编写一些脚本,示例代码:
def data = new ArrayList()
1.upto(vars.get('Jmeter_Domian_matchNr') as int, {
def entry = new groovy.json.internal.LazyMap()
entry.put('Domain', vars.get("Jmeter_Domian_" + it))
data.add(entry)
})
def builder = new groovy.json.JsonBuilder()
builder(request: data.collect { it })
vars.put('myRequest', builder.toPrettyString())
log.info('Generated request: ')
log.info(vars.get('myRequest'))
演示:
您将能够在需要时以${myRequest}
的形式访问生成的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.