7

带有 exec 链的 Gatling 场景。请求后,保存返回的数据。稍后它会被处理,根据处理结果,它应该失败或通过测试。

这似乎是最简单的情况,但我找不到任何可靠的信息如何从 exec 块中失败测试。assert破坏了场景并且看似 Gatling(如:异常抛出不仅使测试失败)。

例子:

// 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");
    })
))

在“监护人失败,关闭系统”的某个地方的场景之上。

现在这似乎是一件有用的、经常使用的事情——我可能错过了一些简单的事情。怎么做?

4

4 回答 4

5

您必须遵守 Gatling API。

  1. 通过检查,您不会“失败”测试,而是请求。如果您正在寻找未能通过整个测试,您应该查看Assertions API 和Jenkins 插件
  2. 您只能在请求站点执行检查,以后不能。一个很好的理由是,如果您将 bodyString 存储在 Sessions 中,就像您正在做的那样,您将最终使用大量内存并且可能会崩溃(仍然被引用,因此不可回收)。您必须执行您processData的检查,通常在转换可选步骤中。
于 2014-09-02T11:54:57.587 回答
2

你在找类似的东西吗

  .exec(http("getRequest")
    .get("/request/123")
    .headers(headers)
    .check(status.is(200))
    .check(jsonPath("$.request_id").is("123")))
于 2017-05-30T04:27:56.663 回答
1

由于编辑队列已经满了。

这已经在新版本的 Gatling 中得到解决。发布 3.4.0

他们补充说

退出这里如果

exitHereIf("${myBoolean}")
exitHereIf(session => true)

如果条件成立,则让用户从此时退出场景。条件参数是一个表达式[布尔]。

于 2021-01-27T06:46:29.430 回答
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失败,此场景将正常中止。

于 2019-10-29T21:29:31.380 回答