我有一个场景要用不同的用户负载进行测试。
val reports1 = createScenario("rep1") val reports2 = createScenario("rep2") val reports3 = createScenario("rep3") def createScenario(name: String) : ScenarioBuilder = { val newScenario = scenario(name) .exec( sse("My Scenario") .open("/endpoint") .headers(config.header)) .exec(sse("close").close()) newScenario } setUp( reports1.inject( atOnceUsers(1), nothingFor(2 minutes), atOnceUsers(10), nothingFor(5 minutes), atOnceUsers(50) ), reports2.inject( atOnceUsers(1), nothingFor(2 minutes), atOnceUsers(10), nothingFor(5 minutes), rampUsers(50) over(50 seconds) )) .protocols(http.baseURL(config.url))
当我运行这个时,注入是并行的。
我可能可以将所有的用户注入合并到一个块中,并用pause()分隔,但这似乎不是一个好的解决方案。
注入不是并行完成的,场景是并行完成的。这就是Gatling的工作原理——所有场景都作为参数传递给了一个 setUp() 调用总是并行执行的,如果您希望它们按顺序运行,那么每个场景应该在单独的模拟类中。另外,您的示例没有任何意义,因为您运行的两个场景名称不同,如果您可以提供真实的示例,我可能会推荐其他的方案。
setUp()