向所需的Gatling会话添加值的基本示例

Kar*_*ahl 2 gatling

我希望能够使用我的Gatling源中的可配置值发布SOAP请求.因此,我将以下XML ELFileBody存储在文件"request.xml"中

...
   <rec:cardNumber>${cardNumber}</rec:cardNumber>
...
Run Code Online (Sandbox Code Playgroud)

我知道必须将变量cardNumber添加到会话中.有大量文件说明这是必要的.但是,我没有找到关于如何在执行环境中正确完成此操作的完整示例.

鉴于以下Gradle 2.1代码:

    class GetBlacklistStatus extends Simulation {
      val cardNumber="12345"

      object GetBlacklistStatus {
        val soap = exec(http("SOAP Request")
            .post("/myservice")
            .body(ELFileBody("request.xml")).asXML
            .basicAuth("testUSER", "testPASSWORD")
            )
      }
      val httpConf = http
        .baseURL("http://localhost:8080")
        .proxy(Proxy("localhost", 8888))
        .userAgentHeader("Gradle TEST")

      val users= scenario("user").exec(GetBlacklistStatus.soap)

      setUp(
        users.inject(rampUsers(10) over (10 seconds))
      ).protocols(httpConf)
    }
Run Code Online (Sandbox Code Playgroud)

如何在POST之前将声明的值cardNumber放入会话中?

我知道我可以使用诸如馈线之类的机制将值移动到会话中,但我想直接这样做,并希望在此过程中学到一些东西.

小智 14

文档:

.exec(_.set("cardNumber", "12345"))
Run Code Online (Sandbox Code Playgroud)

会做的.

  • 据推测,下划线代表`session => session`,它不在皮埃尔链接的文档中.-1 (4认同)
  • 谢谢,请问这个例子中下划线代表什么? (2认同)

Kar*_*ahl 9

感谢皮埃尔的回答,我把它拼凑在一起:

val soap = 
    exec(_.set("cardNumber","1001"))
    .exec(http("SOAP Request")
    .post("/pl4/pto/ws3/WSReconstructionService")
    .body(ELFileBody("GetBlacklistStatus.xml")).asXML
    .basicAuth("user2", "pwd2")
    .check(status.is(200))
    )
Run Code Online (Sandbox Code Playgroud)

对于像我这样不熟悉下划线的人,以下似乎也有效:

val soap = 
    exec{session =>session.set("cardNumber","1001")}
    .exec(http("SOAP Request")
    .post("/pl4/pto/ws3/WSReconstructionService")
    .body(ELFileBody("GetBlacklistStatus.xml")).asXML
    .basicAuth("user2", "pwd2")
    .check(status.is(200))
    )
Run Code Online (Sandbox Code Playgroud)