如何配置Gatling场景仅执行一次(单虚拟用户单迭代)
Gatling 场景单次执行配置方案
需求
执行Gatling场景恰好一次:单个虚拟用户执行一次完整迭代,无需持续运行、多并发用户或控制每秒启动用户数。
现有代码示例
final ScenarioBuilder scenario = scenario("exactly once") .exec(http.get("/something")) .exec(http.get("/somethingelse")); setUp(scenario.injectClosed( constantConcurrentUsers(1).iterations(1) // 此处该如何配置? );
期望结果
Web服务器收到2个请求,分别对应/something和/somethingelse接口。
问题背景
此前使用k6时,可通过k6 run -u1 -i1 test.js命令或shared-iterations执行器轻松实现该需求,但Gatling官方注入文档未明确提及迭代相关配置方式,现寻求正确的Gatling配置方案。
正确配置方案
方式一:开模型注入(推荐,直观简洁)
使用atOnceUsers(1)方法,一次性启动1个虚拟用户,该用户会完整执行一次场景迭代:
final ScenarioBuilder scenario = scenario("exactly once") .exec(http.get("/something")) .exec(http.get("/somethingelse")); setUp(scenario.injectOpen(atOnceUsers(1)));
方式二:闭模型注入
若需使用闭模型,你原有代码的配置逻辑是正确的:constantConcurrentUsers(1).iterations(1)会维持1个并发用户,且仅执行1次迭代:
final ScenarioBuilder scenario = scenario("exactly once") .exec(http.get("/something")) .exec(http.get("/somethingelse")); setUp(scenario.injectClosed(constantConcurrentUsers(1).iterations(1)));
两种配置均能触发场景中的两次请求,达成预期效果。
内容的提问来源于stack exchange,提问作者knittl
相关产品推荐
相关产品推荐

