gpt4 book ai didi

scala - 从 session 中读取时如何发出 Gatling 捕获请求?

转载 作者:行者123 更新时间:2023-12-05 00:19:37 28 4
gpt4 key购买 nike

根据Gatling documentation ,我可以在执行场景时使用 session 属性。

但是,每次我在场景中使用函数文字访问 session 时,都会遇到以下异常:

[error] java.lang.UnsupportedOperationException: There were no requests sent during the simulation, reports won't be generated
[error] at io.gatling.charts.report.ReportsGenerator$.generateFor(ReportsGenerator.scala:45)
[error] at io.gatling.app.Gatling.generateReports(Gatling.scala:198)
[error] at io.gatling.app.Gatling.start(Gatling.scala:82)
[error] at io.gatling.app.Gatling$.fromArgs(Gatling.scala:59)
[error] at io.gatling.sbt.GatlingTask.liftedTree1$1(GatlingTask.scala:49)
[error] at io.gatling.sbt.GatlingTask.execute(GatlingTask.scala:48)
[error] at sbt.ForkMain$Run$2.call(ForkMain.java:296)
[error] at sbt.ForkMain$Run$2.call(ForkMain.java:286)
[error] at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[error] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[error] at java.lang.Thread.run(Thread.java:745)
[error] Simulation FooBarSimulation failed.
[info] Simulation(s) execution ended.

更具体地说,虽然这个符号给了我正确的结果:
  val scn = scenario("Foobar").feed(feeder).exec {
http("foo").httpRequest("GET", "http://example.org")
}.pause(5)

这失败了上述异常(exception):
  val scn = scenario("Foobar").feed(feeder).exec { session =>
http("foo").httpRequest("GET", "http://example.org")
session
}.pause(5)

最佳答案

场景是模拟的计划。所以当你说 val scn = ...您不是在执行模拟,而是在构建稍后由 gatling 执行的 AST。

所以当你说

val scn = scenario("Foobar").feed(feeder).exec { session =>
http("foo").httpRequest("GET", "http://example.org")
session
}.pause(5)

零件 http("foo").httpRequest("GET", "http://example.org")是一个没有副作用的语句,它的值从不使用。所以它也可能不在那里。就加特林而言,您的情况是
val scn = scenario("Foobar").feed(feeder).exec { session =>
session
}.pause(5)

这绝对没有任何作用,因此在生成报告时会产生错误。

为了实现你想要的, session 操作必须是一个单独的 exec 语句。像这样:
val scn = scenario("Foobar").feed(feeder)
.exec ( session => session.set("foo", "bar") )
.exec (
http("foo").httpRequest("GET", "http://example.org")
)
}.pause(5)

关于scala - 从 session 中读取时如何发出 Gatling 捕获请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35480244/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com