我有一个如下的场景
foo=exec ()
.exec()
... //few more execs
wsOp=repeat(repeatCount){
exec(
ws("Send HeartBeat")
.sendText("some Heartbeat format").exitHereIfFailed
)
exec(
ws("Check HeartBeat")
.check(wsAwait.within(500).until(1).regex("some regex"))).exitHereIfFailed
)
.pause(delay)
}
val foo=scenario("bar").exec(foo).exec(wsOp)
我一直在尝试使用gatling的exitHereIfFailed语句,但它并没有像我预期的那样工作。尽管ws中的一些ws操作发送或检查失败,但用户线程仍在继续执行"wsOp"。
It should be after exec
foo=exec ()
.exec()
... //few more execs
wsOp=repeat(repeatCount){
exec(
ws("Send HeartBeat")
.sendText("some Heartbeat format")
).exitHereIfFailed
exec(
ws("Check HeartBeat")
.check(wsAwait.within(500).until(1).regex("some regex")))
).exitHereIfFailed
.pause(delay)
}
val foo=scenario("bar").exec(foo).exec(wsOp)
首先,exitHereIfFailed是一个结构DSL元素(与exec级别相同),因此它可以在ws操作中调用,而您的代码甚至不会编译。
然后,exec(ws("Check HeartBeat"))缺少一个前导点,因此它没有与前一个exec链接,从而导致ws("Send HeartBeat")被丢弃。