Scala “如何从内部通过加特林测试”;执行官;?
带有exec链的Gatling场景。请求后,将保存返回的数据。稍后它被处理,根据处理结果,它应该失败或通过测试 这似乎是最简单的可能场景,但我无法从exec块中找到任何关于如何使测试失败的可靠信息。assert打破了场景,看起来像是Gatling(比如:异常抛出并不仅仅是测试失败) 例如:Scala “如何从内部通过加特林测试”;执行官;?,scala,assert,gatling,Scala,Assert,Gatling,带有exec链的Gatling场景。请求后,将保存返回的数据。稍后它被处理,根据处理结果,它应该失败或通过测试 这似乎是最简单的可能场景,但我无法从exec块中找到任何关于如何使测试失败的可靠信息。assert打破了场景,看起来像是Gatling(比如:异常抛出并不仅仅是测试失败) 例如: // The scenario consists of a single test with two exec creating the execChain val scn = scenario("MyAwe
// The scenario consists of a single test with two exec creating the execChain
val scn = scenario("MyAwesomeScenario").exec(reportableTest(
// Send the request
exec(http("127.0.0.1/Request").get(requestUrl).check(status.is(200)).check(bodyString.saveAs("MyData")
// Process the data
.exec(session => {
assert(processData(session.attributes("MyData")) == true, "Invalid data");
})
))
上面的场景是“guardian失败,关闭系统”
现在这似乎是一个有用的,经常使用的事情-我可能错过了一些简单的东西。如何做到这一点?你必须遵守加特林API
processData
,通常是在可选步骤中你在找类似的东西吗
.exec(http("getRequest")
.get("/request/123")
.headers(headers)
.check(status.is(200))
.check(jsonPath("$.request_id").is("123")))
我实现了一些东西,这听起来正是你想要实现的。我通常在虚拟用户尝试登录后使用它 是这样使用的
val scn = scenario("MyAwesomeScenario")
.exec(http("Get data from endpoint 1")
.get(request1Url)
.check(status.is(200))
.check(bodyString.saveAs("MyData"))
.check(processData(session.attributes("MyData")).is(true)))
.exitHereIfFailed // If we weren't able to get the data, don't continue
.exec(http("Send the data to endpoint 2")
.post(request2Url)
.body(StringBody("${MyData}"))
如果
退出失败
之前的任何检查失败,此场景将在退出失败
时正常中止。,因为编辑队列已满
新版本的《加特林》已经解决了这一问题。3.4.0版
他们补充说
exitHereIf("${myBoolean}")
exitHereIf(session => true)
如果条件成立,则让用户从此点退出场景。条件参数是一个表达式[布尔]。谢谢您的回答。我将研究断言API。关于检查:afaik检查将打破执行链,阻止进一步的数据清理/日志开始,我希望避免丢失这一点(我已经阅读了一些关于实现“缓慢失败”的对话)。在这个特定的测试中,内存也不重要:我们使用Gatling进行功能“yes/no”和性能测试。不,默认情况下check不会中断执行链。仅当您封装在exitBlockOnFail块中时:对不起,我以为已经安装了一个较旧版本的Gatling。断言实际上似乎是完美的。我可以问您是否可以从scn(…).assertions(…)级别断言会话数据?不,支持统计数据仅全局计算,因此断言仅在设置级别atm可用。我们计划在2.1中重构断言引擎,这样您就可以打开一个功能请求了。再次感谢您,我将尝试这样做。