首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在Gatling中传递POST请求中的变量

无法在Gatling中传递POST请求中的变量
EN

Stack Overflow用户
提问于 2020-09-03 22:06:14
回答 1查看 389关注 0票数 0

**在下面的代码中,当我尝试将bearer_token变量传递到POST请求执行中的头部时,请求失败。

但是,如果我将值而不是变量传递到头,则请求成功。我应该如何将变量传递给POST请求。**

代码语言:javascript
复制
class test extends Simulation{

  val headersLogin = Map(
    "Content-Type" -> "application/json",
    "Authorization" -> "Basic YWRtaW46Tm9raWFOc3AxIQ=="
  )

  val headersCreateSubscription = Map(
    "Content-Type" -> "application/json",
    "Accept" -> "application/json"
  )

  var bearer_token = ""

    val httpProtocol = http
    .baseUrl("https://135.121.159.176") // Here is the root for all relative URLs

  val scn =
    scenario("Telemetry Viewer Load Testing")
      .exec(
        http("Get Access Token - POST ")
          .post(":443/rest-gateway/rest/api/v1/auth/token")
          .headers(headersLogin)
          .body(StringBody(
            """{"grant_type": "client_credentials" }""".stripMargin)).asJson
          .check(status is 200)
          .check(jsonPath("$" ).saveAs("RESPONSE_DATA" ))
          .check(jsonPath("$.access_token").saveAs("access_token"))
      )
  
      .exec( session => {
        val token = session("access_token").as[String]
        println( s"ACCESS TOKEN - $token")
        bearer_token ="Bearer ".concat(token)
        session
      })
   
    .exec(
      http("CREATE SUBSCRIPTION - POST")
        .post(":8619/telemetry-viewer/api/v1/restconf/data/telemetry-data-subscription:/subscriptions")
//        .header("Authorization", "Bearer VEtOLWFkbWluNDdiOWY2ZDUtNTMyYS00NDJlLWI1MmItZmFmYTFjZTFlZGEz")
//        .headers(headersCreateSubscription)
        .headers(Map(
          "Content-Type" -> "application/json",
          "Authorization" -> s"${bearer_token}",
          "Accept" -> "application/json"
        ))
        .body(StringBody("""{"subscription": [{"name": "ap_11111", "collection-interval": 60, "telemetry": [ { "id": 1,  "type": "telemetry:/base/system-info/system"}]}]}""".stripMargin)).asJson
        .check(status is 201)
        .check(jsonPath("$" ).saveAs("CREATE_SUBSCRIPTION_RESPONSE_DATA" ))
    )

    .exec(session => {
      val response = session("CREATE_SUBSCRIPTION_RESPONSE_DATA").as[String]
      println(s"CREATE SUBSCRIPTION - RESPONSE BODY: \n$response")
      session
    }
    )

  setUp(scn.inject(atOnceUsers(1)).protocols(httpProtocol))

}
EN

回答 1

Stack Overflow用户

发布于 2020-09-04 03:43:55

不要使用全局变量/引用,它们将在所有虚拟用户之间共享

删除这个不起作用的exec代码块,并使用Gatling EL直接解析:

代码语言:javascript
复制
.header("Authorization", "Bearer ${access_token}")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63725329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档