如何在Gatling中用单用户结合Feeder顺序执行HTTP请求
解决方案
要实现单个用户顺序执行Feeder中所有50个请求,只需调整场景逻辑和用户注入策略,具体步骤如下:
1. 优化Feeder(可选但更简洁)
原Feeder使用可变变量count生成序列,可替换为更安全清晰的方式,直接生成包含50个元素的迭代器:
val feeder = (1..50).map { mapOf("requestParam" to "requestParamValue$it") }.iterator()
2. 修改场景为循环执行
让单个用户循环执行feed+exec逻辑50次,对应Feeder的所有数据:
val scn = scenario("Test scenario") .repeat(50) { // 循环50次,覆盖Feeder的全部50个值 feed(feeder) .exec( http("Post request") .put("/someUrl") .header("Content-Type", "application/json") .body(StringBody(""" { "requestParam": #{requestParam} } """.trimIndent())) ) .pause(1) // 每次请求后暂停1秒,保持原逻辑 }
3. 调整用户注入策略
将并发用户数改为1,一次性启动单个用户:
init { setUp( scn.injectOpen( atOnceUsers(1) // 仅启动1个用户 ).protocols(httpProtocol) ) }
原理说明
单个用户启动后,会进入repeat(50)循环,每次从Feeder中取出下一个参数,执行HTTP请求,完成后暂停1秒,直到跑完所有50次循环。由于Feeder正好包含50个元素,循环次数与Feeder数据量完全匹配,确保所有请求按顺序执行。
内容的提问来源于stack exchange,提问作者Vahancho22
相关产品推荐
相关产品推荐

