如何解决无法在Gatling中的POST请求中传递变量
**在下面的代码中,当我尝试在POST请求执行中将bearer_token变量传递给标头时,请求失败。
但是,如果我将值而不是变量传递给标头,则请求成功。我应该如何将变量传递给POST请求。**
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))
}
解决方法
不要使用全局变量/引用,它们将在所有虚拟用户之间共享
删除此无用的exec块,并使用Gatling EL直接解决:
.header("Authorization","Bearer ${access_token}")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。