所以我有一个完美工作的场景,它的定义如下:
val basicLoginScenario = createScenario(Config.testName, feeder.random,
setSessionParams(PARAM1, Config.param1),
setSessionParams(PARAM2, Config.param2),
setSessionParams(PARAM3, Config.param3),
setSessionParams(PARAM4, Config.param4),
exec(RestApi.userLogin))
exec(RestApi.transaction1))
exec(RestApi.transaction2)))但是当我用exitBlockOnFail包围它时,我得到了以下错误,似乎是在发送任何HTTP请求或解析任何请求/响应JSON之前发生的。
[GatlingSystem-akka.actor.default-dispatcher-4] ERROR io.gatling.http.action.HttpRequestAction - 'httpRequest-5' failed to execute: No attribute named 'cookie' is defined这是exitBlockOnFail的代码:
val basicLoginScenario = createScenario(Config.testName, feeder.random,
exitBlockOnFail{
setSessionParams(PARAM1, Config.param1)
setSessionParams(PARAM2, Config.param2)
setSessionParams(PARAM3, Config.param3)
setSessionParams(PARAM4, Config.param4)
exec(RestApi.userLogin))
exec(RestApi.transaction1))
exec(RestApi.transaction2))
})请注意,"cookie“参数是从userLogin事务中获取的,在此场景中,在获取它之前不会在任何地方使用它,显然不会在setSessionParam中使用,它是:
def setSessionParams(key: String, value: Any) = {
exec(_.set(key, value))
}下面是userLogin事务:
val userLogin = {
exec(http("Login")
.post("/login")
.body(ElFileBody("json/Login.json")).asJson
.check(jsonPath("$.result.cookie").saveAs("cookie")))
}我的feeder中没有"cookie“参数,Login.json中也没有分配"cookie”参数,它只返回它。正如我在开始时所说的,这个场景工作得很完美--只有当我使用exitBlockOnFail处理事务时,才会出现这个问题。你知道是什么原因造成的吗?
发布于 2019-10-15 14:04:33
最初的版本之所以有效,是因为'exec‘可以接受一个可变参数的execs,而'exitBlockOnFail’可以接受一个链。因此,当您为“exitBlockOnFail”提供多个execs时,只执行最后一个操作。
因此,您可以将所有语句包装在一个“exec”中
exitBlockOnFail{
exec(
setSessionParams(PARAM1, Config.param1),
...
exec(RestApi.transaction2)
)
}或者用链子锁住它们
exitBlockOnFail{
setSessionParams(PARAM1, Config.param1)
.setSessionParams(PARAM1, Config.param1)
.setSessionParams(PARAM2, Config.param2)
.setSessionParams(PARAM3, Config.param3)
.setSessionParams(PARAM4, Config.param4)
.exec(RestApi.userLogin)
.exec(RestApi.transaction1)
.exec(RestApi.transaction2)
}https://stackoverflow.com/questions/58361315
复制相似问题