You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gatling如何实现场景顺序执行?andThen配置后仍并行问题

问题根因

两个场景同时启动是场景写法存在语法错误,导致场景1启动后瞬间执行完成,直接触发了andThen的子场景启动条件,和andThen本身的功能无关:

  • 核心错误:exec()仅支持传入请求动作(ActionBuilder类型)、会话处理函数,你写的两处exec传入内容都不符合规范:
    • 第一行.exec{ComputerScenarios.scnCheckSerialNumberIsValidForComputerDeletion(serialNumber)}用大括号包裹了ScenarioBuilder类型的封装场景,这部分逻辑不会被加入场景1的执行链;
    • 第二行.exec(pause(1.minutes))写法错误,pause是场景链式调用的原生API,不需要包在exec()里,这行等待逻辑完全不生效。
  • 配置问题:全局maxDuration(60)设置的时长和你预期的场景1等待时长完全一致,就算修复了前面的语法问题,也会因为触发全局超时强制中断场景1的执行,导致串行逻辑异常。
修复后的正确代码
val scn: ScenarioBuilder = scenario("Scenario-1 ***")
  // 直接传入执行动作,不要额外包大括号传入ScenarioBuilder
  .exec(ComputerScenarios.scnCheckSerialNumberIsValidForComputerDeletion(serialNumber))
  .pause(1.minutes) // pause直接链式调用,不需要包裹在exec()中

val scn2: ScenarioBuilder = scenario("Scenario-2")
  .exec(ComputerScenarios.scnCheckSerialNumberIsValidForComputerDeletion(serialNumber2))

setUp(
  scn.inject(atOnceUsers(1))
    .andThen(scn2.inject(atOnceUsers(1)))
)
.maxDuration(120) // 全局最大时长要大于两个场景的总预期耗时,预留足够冗余
.protocols(httpProtocol)

修复后运行可以在控制台观察到明确的执行阶段分割:场景1的1个用户完成所有请求、等待1分钟完全终止后,才会开始注入场景2的用户,完全符合串行执行的预期。

内容的提问来源于stack exchange,提问作者Emre Varol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 11:51:20