scala - 使用 ChainBuilder 定义加特林用户流的最佳方法是什么?

标签 scala gatling

我是 Scala 和 Ga特林的新手,我正在尝试找出定义用户故事并将其传递给 Ga特林场景的 ChainBuilder 的最佳方式。

当我说用户故事时,在我的例子中,我指的是一个流程,其中包括登录、许多不同的调用,然后在整个测试期间循环另一个调用列表。

我创建了以下函数来创建场景:

 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 调用都实际执行。奇怪的是,如果我改变调用的顺序,它确实可以工作并且所有函数都会被调用。 (所以我肯定做错了什么)

我的第二个问题:

如何在此流程中定义无限循环? (只要测试正在运行就无限)

例如,我希望启动上述流程,当它到达executeSomeCall8时,它将在整个测试期间循环executeSomeCall8和executeSomeCall9。

最佳答案

我不明白为什么您的调用不会被执行,但是您构建场景的方式并不那么灵活。您可以使用链接而不需要 createScenario() 方法。

当你将场景链接起来时,这就引出了你的第二个问题:

val scn = scenario("something")
...
.exec(someCall7)
.forever(){
exec(sommeCall8)
.exec(someCall9)
}
...

在我的例子中, someCallN 看起来像:

val someCall = http("request name")
.get("/some/uri")
...

注意:foerever() 只是一个示例,您可以使用适合您需要的其他循环语句。 我希望它有帮助。

关于scala - 使用 ChainBuilder 定义加特林用户流的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58047387/

相关文章:

scala - Scala 中 "reflective access of structural type member method should be enabled..."警告是什么意思?

Scala 递归没有副作用

scala - 加特林 scala 扩展失败,无法找到证据参数的隐式值

scala - 从 SBT 执行 Gatling 负载测试

scala - 直接从 Spark shell 读取 ORC 文件

Scala 隐式参数投影冲突, "Ambigious Implicit Values"错误

performance - 使用Scala/Akka在JVM中进行高频交易

javascript - 在网页上加载测试 Javascript

testing - 从 Gatling 中的编码响应中提取数据

scala - 使用 Gatling 将场景模块化以按顺序运行