带有exec链的Gatling场景。请求后,保存返回的数据。之后它会被处理,并且根据处理结果,它应该失败或通过测试。
这似乎是最简单的可能情况,但我无法找到任何可靠的信息,如何在exec块中失败测试。 断言打破了场景并且看似加特林(例如:例外投掷并不会使测试失败)。
示例:
// 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");
})
))
在线上某处的场景"监护人失败,关闭系统"。
现在这似乎是一个有用的,经常使用的事情 - 我可能会遗漏一些简单的事情。怎么做?
答案 0 :(得分:3)
您必须遵守Gatling API。
processData
,通常是transform可选步骤。答案 1 :(得分:2)
你在寻找像
这样的东西吗? .exec(http("getRequest")
.get("/request/123")
.headers(headers)
.check(status.is(200))
.check(jsonPath("$.request_id").is("123")))
答案 2 :(得分:1)
因为编辑队列已经满了。
这已经在新版本的 Gatling 中解决了。 3.4.0 版
他们添加了
exitHereIf("${myBoolean}")
exitHereIf(session => true)
如果条件成立,让用户从此时退出场景。条件参数是一个表达式[布尔]。
答案 3 :(得分:0)
我使用exitHereIfFailed
实现了一些听起来完全像您要完成的任务。我通常在虚拟用户尝试登录后使用它。
exitHereIfFailed
的使用方式
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}"))
如果exitHereIfFailed
之前的任何检查失败,则此情况将在exitHereIfFailed
处中止。