Scala 使用ChainBuilder定义用户流的最佳方法是什么?
我是Scala和Gatling的新手,我正在尝试找出定义用户故事并将其传递给Gatling场景的最佳方法 在我的例子中,当我说用户故事时,我指的是一个流,它将包括登录、许多不同的调用,然后在整个测试期间循环另一个调用列表 我创建了以下函数来创建场景:Scala 使用ChainBuilder定义用户流的最佳方法是什么?,scala,gatling,Scala,Gatling,我是Scala和Gatling的新手,我正在尝试找出定义用户故事并将其传递给Gatling场景的最佳方法 在我的例子中,当我说用户故事时,我指的是一个流,它将包括登录、许多不同的调用,然后在整个测试期间循环另一个调用列表 我创建了以下函数来创建场景: def createScenario(name: String, feed: FeederBuilder, chains: ChainBuilder*): ScenarioBuilder = { scenario(name).feed(f
def createScenario(name: String, feed: FeederBuilder, chains: ChainBuilder*): ScenarioBuilder = {
scenario(name).feed(feed).forever() {
exec(chains).pause(Config.pauseBetweenRequests)
}
}
下面是我如何执行此函数的:
val scenario = createScenario(Config.testName, feeder.random,
setSessionParams(PARAM1, Config.param1),
setSessionParams(PARAM2, Config.param2),
login,
executeSomeCall1,
executeSomeCall2,
executeSomeCall3,
executeSomeCall4,
executeSomeCall5,
executeSomeCall6,
executeSomeCall7,
executeSomeCall8,
executeSomeCall9,
)
以下是executeSomeCall函数的示例:
def executeSomeCall = {
exec(http("ET Call Home")
.post("/et/call/home")
.body(ElFileBody("/redFingerBody.json")).asJson
.check(status is 200))
}
我的第一个问题:
这是定义rest调用链并将其提供给场景的正确方法吗?我这样问是因为我在定义这样的流时看到,由于某种原因,并不是所有的REST调用都被实际执行。奇怪的是,如果我改变调用的顺序,它就会工作,所有函数都会被调用。(所以我肯定做错了什么事)
我的第二个问题:
如何在此流中定义无限循环?(只要测试运行,无限期)
例如,我希望上面的流启动,当它到达executeSomeCall8时,它将在整个测试期间循环executeSomeCall8和executeSomeCall9 我不明白为什么您的调用不会被执行,但是您构建场景的方式没有那么灵活。您可以在不需要createScenario()方法的情况下使用链接 这就引出了你的第二个问题,当你将场景链接为:
val scn=场景(“某物”)
...
.exec(someCall7)
.永远{
执行主任(索姆卡尔8)
.exec(someCall9)
}
...
在我的情况下,有些人看起来像:
val someCall=http(“请求名称”)
.get(“/some/uri”)
...
注意:foerever()只是一个例子,您可以使用其他适合您需要的循环语句。
我希望它能有所帮助。请注意,如果使用.forever,则需要在注射配置文件中设置maxDuration