首页 > 解决方案 > 如何将值从一个场景传递到另一个场景?

问题描述

我有一些端到端的流程,我必须在其中运行服务并将值传递给下一个场景。我可以打印场景中的值,但不能将它们用于下一个场景。

我尝试使用 SaveAs 保存值

val scn_Token1 ={ scenario("Token1")
    .exec(actionBuilder = http("Token1")
      .post("/getToken")
      .body(StringBody(bdy_Token)).asJson
      .check(status.is(200))
      .check(jsonPath("$.Token").exists)
      .check(jsonPath("$..Token")
        .find
        .saveAs("Token")
      )
      .check(jsonPath("$..id")
        .find
        .saveAs("mid")
      )
      .check(jsonPath("$..otp")
        .find
        .saveAs("otp")
      )
    )pause(tnk_token milliseconds)
  }


  val scn_Auth ={ scenario("Authentication")
    .exec(actionBuilder = http("Authentication")
      .post(authServiceUrl)
      .header("Token", "${Token}")
      .header("id", "${id}")
      .header("otp", "${otp}")
      .body(StringBody(bdy_Auth)).asJson
      .check(status.is(200)))
      .pause(tnk_Auth milliseconds)
  }



  setUp(
   scn_Token1.inject(nothingFor(dly_token_first seconds),rampUsers(ucnt_token_first) during (ramp_token_first seconds)).protocols(httpConfToken),
  scn_Auth.inject(nothingFor(dly_Auth seconds),rampUsers(ucnt_Auth) during (ramp_Auth seconds)).protocols(httpConf)
  ).maxDuration(test_duration minutes)

我收到类似的错误

“httpRequest-2”未能执行:未定义名为“id”的属性

'httpRequest-2' 执行失败:没有定义名为 'Token' 的属性

我还尝试在场景 1 完成后执行第二种场景的等待时间。但它仍然没有得到价值。

请注意,我不希望在单一场景中合并令牌和身份验证,因为它具有不同的配置。值应该从一个场景传递到另一个场景。请让我知道这里出了什么问题?

标签: gatlingscala-gatling

解决方案


Gatling 无法在用户之间传递数据 - 如果您需要在每个 scn_Auth 请求之前执行 scn_Token 来设置会话参数,只需将其包含在 scn_Token 中即可。

将 scn_Auth 重新定义为

  val scn_Auth ={ scenario("Authentication")
.exec(scn_Token1)
.exec(actionBuilder = http("Authentication")
  .post(authServiceUrl)
  .header("Token", "${Token}")
  .header("id", "${id}")
  .header("otp", "${otp}")
  .body(StringBody(bdy_Auth)).asJson
  .check(status.is(200)))
  .pause(tnk_Auth milliseconds)
}

然后只为 scn_Auth 注入用户


推荐阅读