1
我的脚本中有两种情况。我想将“CreateId”的值传递给第二个场景。我在第一种情况下保存了“CreateId”。如何在gatling中的两个场景之间传递值?
错误说:
名为 'CreateId' 没有属性被定义
jsonPath($ ID).find(0).exists,一无所获
方案 - 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"))
)
方案 - 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)
你好@Peter,当你运行很多用户并发并且创建超过10秒时,这种方法如何工作?我也有类似的情况,但由于第一种情况对我来说可能需要很长时间,因此有时在第二种情景开始时并未设置变量。 – Gery
嗨Gery,对我来说在上面的代码中,第二个场景很重要,我必须检查第二个调用的响应,以便在第一个场景得到响应之前持有该场景。根据您对响应时间的计算,您可以增加时间限制,例如(NothingFor(300秒))。 – Peter