Scala 在gatling中,如何在两种场景之间传递值?
我的脚本中有两个场景。我想把“CreateId”的值传递给第二个场景。我在第一个场景中保存了“CreateId” 错误是: 未定义名为“CreateId”的属性 jsonPath($.id).find(0).存在,未找到任何内容 场景-1Scala 在gatling中,如何在两种场景之间传递值?,scala,gatling,Scala,Gatling,我的脚本中有两个场景。我想把“CreateId”的值传递给第二个场景。我在第一个场景中保存了“CreateId” 错误是: 未定义名为“CreateId”的属性 jsonPath($.id).find(0).存在,未找到任何内容 场景-1 val create = scenario("Create") .exec(http("post_request_create") .post("/api/asdf") .headers(headers_10)
val create = scenario("Create")
.exec(http("post_request_create")
.post("/api/asdf")
.headers(headers_10)
.body(StringBody(session =>s"""{"name": "${randomName()}"}""")).asJSON
.check(jsonPath("$.id")
.saveAs("CreateId"))
)
场景-2
val addTerm = scenario("Add Term")
.repeat (repeatCount){
exec(http("Add")
// NOT WORKING
//.post("""/api/asdfg/${CreateId}/terms""")
// NOT WORKING
.post(session => "/api/asdfg/" + session.get("CreateId").asOption[String] + "/terms")
.headers(headers_10)
.body(StringBody(session =>s"""{...somedata...}"""))
)
}
val scn = List(create.inject(atOnceUsers(1)),addTerm.inject(nothingFor(10 seconds), atOnceUsers(userCount)))
setUp(scn).protocols(httpProtocol)
使用以下代码进行了尝试,效果良好。希望它能帮助他人。
var CreateId = ""
Scenario - 1
val create = scenario("Create")
.exec(http("post_request_create")
.post("/api/asdf")
.headers(headers_10)
.body(StringBody(session =>s"""{"name": "${randomName()}"}""")).asJSON
.check(jsonPath("$.id")
.saveAs("CreateId"))
)
.exec(session => {
CreateId = session("CreateId").as[String].trim
println("%%%%%%%%%%% ID =====>>>>>>>>>> " + CreateId)
session}
)
Scenario - 2
val addTerm = scenario("Add Term")
.exec(_.set("CreateId", CreateId)) // Set it here
.repeat (repeatCount){
exec(http("Add")
.post("""/api/asdfg/${CreateId}/terms""")
.headers(headers_10)
.body(StringBody(session =>s"""{...somedata...}"""))
)
}
val scn = List(create.inject(atOnceUsers(1)),addTerm.inject(nothingFor(10 seconds), atOnceUsers(userCount)))
setUp(scn).protocols(httpProtocol)
Hello@Peter,当您同时运行多个用户时,如果创建时间超过10秒,这种方法是如何工作的?我有一个类似的情况,但由于第一个场景对我来说可能需要很长的时间,变量有时在第二个场景开始时没有设置。嗨,Gery,对我来说,在上面的代码中,第二个场景很重要,我必须检查第二个呼叫的响应,所以我保持该场景,直到收到第一个场景的响应。您可以根据响应时间的计算增加时间限制,即(300秒内为零)。