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