繁体   English   中英

如何从加特林的供稿器内部访问存储在会话中的值

[英]How to access a value stored in a session from within a feeder in Gatling

在我的加特林场景中,一个值存储在用户的会话中。 稍后在同一场景中,将调用feed并传递一个自定义feeder。 定制供稿器需要使用会话中存储的值来生成其下一个值。

val MyScenario = scenario("ScenerioName")
  .repeat(10, "repetition") {
    exitBlockOnFail {
      group("WorkflowGroupName") {
        exec(session => {
            // SETTING A VALUE INTO THE USER'S SESSION
            session.set("sessionVariable", 99)  // value that is stored changes for every run of the workflow (99 just for example purposes)
        })
        // CUSTOM FEEDER THAT GENERATES ITS NEXT VALUE USING THE SESSION VARIABLE 'sessionVariable' STORED ABOVE
        .feed(myFeeder)
        .group("RequestGroup1") {
          exec(httpPost1)
        }
      }
    }
  }

val myFeeder = Iterator.continually(Map("jsonFileValue" -> {

  // WANT TO RETRIEVE VALUE OF 'sessionVariable' STORED IN THE SESSION
  val returnValue = /* logic that generates its value based on value of 'sessionVariable' retrieved */
  returnValue

}
))

val httpPost1 = http("Request1")
  .post("http://IPAddress/service.svc")
  .headers(httpHeaders)
  .body(ELFileBody("MyJsonFile.json"))
  .check(status.is(200))
val httpHeaders = Map(
  "Content-Type" -> "application/json; charset=UTF-8",
  "X-Pod" -> ""
)

如何将此存储的会话值传递给Feeder或让Feeder从会话中检索此值?

文档所述:

有时,您可能希望根据会话中的某些信息来过滤注入的数据。

Feeder只是一个Iterator,无法实现此目的,因此它没有意识到上下文。

如果您的值与所运行的测试无关,则也许一种好方法是在运行测试之前生成一个csv,然后将此csv馈送到测试中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM