如何在Gatling的Java脚本中调用其他脚本并行执行?
在Gatling(Java)中并行执行多个脚本(script_1与script_2)
核心思路
Gatling实现多脚本并行执行的关键是复用原有脚本的场景逻辑,在新脚本script_3的setUp方法中同时配置多个场景的注入策略,Gatling会默认并行启动这些负载场景。
步骤1:改造原有脚本(提取可复用场景)
如果script_1.java和script_2.java是独立的Simulation类,先将核心场景逻辑提取为公共静态变量,方便script_3引用:
script_1.java 修改后
import io.gatling.javaapi.core.ScenarioBuilder; import io.gatling.javaapi.core.Simulation; import static io.gatling.javaapi.core.CoreDsl.*; import static io.gatling.javaapi.http.HttpDsl.http; public class script_1 extends Simulation { // 提取公共场景,供其他脚本复用 public static final ScenarioBuilder SCENARIO_1 = scenario("Script 1 业务流程") .exec(http("请求1-获取列表") .get("/api/list")) .pause(2); // 保留原有脚本的独立运行配置(可选) { setUp(SCENARIO_1.injectOpen(atOnceUsers(5))) .protocols(http.baseUrl("http://your-target-host.com")); } }
script_2.java 修改后
import io.gatling.javaapi.core.ScenarioBuilder; import io.gatling.javaapi.core.Simulation; import static io.gatling.javaapi.core.CoreDsl.*; import static io.gatling.javaapi.http.HttpDsl.http; public class script_2 extends Simulation { public static final ScenarioBuilder SCENARIO_2 = scenario("Script 2 业务流程") .exec(http("请求2-提交数据") .post("/api/submit") .formParam("key", "value")) .pause(1); // 保留原有脚本的独立运行配置(可选) { setUp(SCENARIO_2.injectOpen(atOnceUsers(5))) .protocols(http.baseUrl("http://your-target-host.com")); } }
步骤2:创建script_3.java实现并行执行
在script_3中引用前两个脚本的场景,在setUp中同时配置两个场景的注入策略,即可实现并行执行:
import io.gatling.javaapi.core.Simulation; import static io.gatling.javaapi.core.CoreDsl.*; import static io.gatling.javaapi.http.HttpDsl.http; public class script_3 extends Simulation { // 引用script_1和script_2中的公共场景 private final ScenarioBuilder scenario1 = script_1.SCENARIO_1; private final ScenarioBuilder scenario2 = script_2.SCENARIO_2; { setUp( // 为每个场景配置注入策略,示例用atOnceUsers,可替换为rampUsers等 scenario1.injectOpen(atOnceUsers(10)), scenario2.injectOpen(atOnceUsers(10)) ) // 全局HTTP协议配置(若两个脚本baseUrl不同,可在各自场景单独设置) .protocols(http.baseUrl("http://your-target-host.com")) // 可选:添加全局断言、报告配置 .assertions(global().responseTime().max().lt(500)); } }
关键说明
- 并行逻辑:Gatling在
setUp中传入多个场景的注入配置时,默认会并行启动所有场景的负载,无需额外关键字。 - 注入策略:示例使用
atOnceUsers(一次性启动指定用户数),可根据测试需求替换为rampUsers(梯度启动)、constantUsersPerSec(恒定用户速率)等其他Gatling注入方法。 - 复用性:提取公共场景后,
script_1、script_2仍可独立运行,script_3仅负责组合并行执行逻辑。
内容的提问来源于stack exchange,提问作者Anna Chepurkina
相关产品推荐
相关产品推荐

