Gattle - 按顺序执行场景

问题描述 投票:0回答:2

当我运行如下代码时:

setUp(
     scenario1.inject(constantUsersPerSec(1) during (1 second)),
     scenario2.inject(constantUsersPerSec(1) during (1 second))
).protocol()

两个场景同时开始。
需要改什么才能一一运行?

scala gatling
2个回答
12
投票

您可以通过“nothingFor”注入步骤开始第二个场景

setUp(
   scenario1.inject(constantUsersPerSec(1) during (1 second)),
   scenario2.inject(nothingFor(1 second) ,
                    constantUsersPerSec(1) during (1 second))
).protocol()

如果想要保证顺序执行,就必须将两个场景的链都放到一个新的场景中。

var scn = scenario("combined scenario").
           .exec(chain1)
           .exec(chain2)

def chain1 = exec(...)...
def chain2 = exec(...)...

通常我将页面的脚本(记录的、易失的)与用户场景序列(页面调用链)和加载模型(注入步骤的设置)分开,这使得重新组合链以创建新场景变得更容易。


6
投票

关键方法是

andThen

在 Gattle 3.4+ 中,他们为其添加了新的 DSL,看起来像这样(取自官方文档)

setUp(
  parent.inject(injectionProfile)
    // child1 and child2 will start at the same time when last parent user will terminate
    .andThen(
      child1.inject(injectionProfile)
        // grandChild will start when last child1 user will terminate
        .andThen(grandChild.inject(injectionProfile)),
      child2.inject(injectionProfile)
    )
)

文档https://docs.gadling.io/reference/script/core/injection/#sequential-scenarios

© www.soinside.com 2019 - 2024. All rights reserved.