我正在尝试建立一个场景,在该场景中,用户首先登录,然后在注销之前先执行一些操作。 问题是我想保存登录请求中的标头响应,以便在下一个请求中使用它。
用户登录时,将获得包含带有令牌的Authorization标头的标头响应。
这是我的代码,但是不起作用:
val LoggingTest = scenario("Basic Scenario")
.exec(http("Logging")
.post("/login")
.body(
StringBody("""{"name" : "test",
"password" : "test"}""")
)
.check(header("Authorization").saveAs("token"),status.is(200))
).pause(15)
.exec(http("check")
.get("/sayhi")
.header("Authorization",s"${token}")
.check(status.is(200))
).pause(15)
我该如何解决?
答案 0 :(得分:3)
这是您可以执行的操作:
import io.gatling.core.Predef._
import io.gatling.http.Predef._
val LoggingTest: ScenarioBuilder = scenario("Basic Scenario")
.exec(http("Logging")
.post("/login")
.body(
StringBody("""{"name" : "test",
"password" : "test"}""")
)
.check(header("Authorization").saveAs("token"),status.is(200))
).pause(15)
.exec(
http("check")
.get("/sayhi")
.header("Authorization", session => session("token").validate[String])
.check(status.is(200))
).pause(15)
答案 1 :(得分:2)
不是s"${token}"
,而是没有"${token}"
的{{1}}。
可悲的是,IntelliJ自动添加了此s
,因为它认为您想在使用Gatling表达式语言时使用Scala的String插值。