如何在Gatling中根据序列元素数量动态发送HTTP请求?
Gatling动态发送HTTP请求的问题解决
Gatling完全支持根据序列元素的数量动态发送HTTP请求,你的代码没达到预期是因为没有把处理后的序列存入Session,且foreach引用了错误的变量。
原代码的问题
- 你在
exec闭包里定义的residents是局部变量,没有存到Gatling的Session中,后续的foreach根本无法访问这个变量。 foreach的第一个参数需要是Session中存储序列的键名,而不是局部变量名。
修改后的代码
.exec { session => // 处理字符串,生成URL序列 val residents = session("residents").as[String] .split(",") .toSeq .map(f => f.replaceAll("\"", "")) // 将处理后的序列存入Session session.set("residentsList", residents) } // 遍历Session中的序列,每个元素存入"resident"变量 .foreach("${residentsList}", "resident") { exec(http("Request for resident URL") .get("${resident}") // 使用Session中的resident变量 ) }
关键修改点
- 在
exec闭包的最后,通过session.set("residentsList", residents)把处理好的URL序列存入Gatling Session,这样后续步骤才能获取到。 foreach的第一个参数改为"${residentsList}"(Session中序列的键名),Gatling会自动遍历这个序列的每个元素,把当前元素存入"resident"变量。- HTTP请求里用
${resident}(或者#{resident},两种写法都支持)引用遍历到的URL。
内容的提问来源于stack exchange,提问作者Debugger
相关产品推荐
相关产品推荐

