如何在“ exec”内部使加特林测试失败?

hau*_*ron 6 assert scala gatling

带有执行链的加特林场景。请求后,将保存返回的数据。稍后对其进行处理,并且根据处理结果,它应该失败或通过测试。

这似乎是最简单的情况,但是我找不到任何可靠的信息如何在exec块中使测试失败。assert打破了场景,看起来像是加特林(例如:异常抛出不仅使测试失败)。

例:

// 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");
    })
))
Run Code Online (Sandbox Code Playgroud)

在方案上方的某个地方,“守护者失败,关闭了系统”。

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

Ste*_*lle 5

您必须遵守 Gatling API。

  1. 通过检查,您不会“失败”测试,而是“失败”请求。如果您正在寻找整个测试失败的情况,您应该查看断言API 和Jenkins 插件
  2. 您只能在请求站点执行检查,而不能稍后执行。一个很好的原因是,如果您像正在做的那样将 bodyString 存储在 Sessions 中,您将最终使用大量内存并且可能会崩溃(仍然被引用,因此不能被垃圾回收)。您必须processData在检查中执行您的检查,通常是在转换可选步骤中。

  • 不,默认情况下检查不会破坏执行链。仅当您包装在 exitBlockOnFail 块中时:http://gatling.io/docs/2.0.0-RC3/general/scenario.html?highlight=exithereiffailed#error-management (2认同)