【问题标题】:Gatling scenario check the exact content of the response bodyGatling 场景检查响应正文的确切内容
【发布时间】:2020-07-25 00:12:46
【问题描述】:

我正在发送如下所示的请求,并希望响应的正文为 ""(请参阅下面的检查):

  val runGraphScn = scenario("runGraph Scenario")
    .exec(http("POST runGraph")
      .post("/runGraph")
      .body(InputStreamBody(getClass.getResourceAsStream("/rungraph_req_body.json")))
      .check(
        status is 200,
        bodyString is ""
      )
    )

但是当我运行该场景时,我发现它失败了 bodyString.find.is(), found ""

================================================================================
2020-07-24 17:09:20                                          55s elapsed
---- Requests ------------------------------------------------------------------
> Global                                                   (OK=1      KO=2     )
> POST runGraph                                            (OK=0      KO=1     )
> GET getProject                                           (OK=1      KO=0     )
> POST /runGraphResult                                     (OK=0      KO=1     )
---- Errors --------------------------------------------------------------------
> bodyString.find.is(), found ""                                      1 (50.00%)
> status.find.is(200), but actually found 404                         1 (50.00%)

如何检查响应正文是否为空??

【问题讨论】:

    标签: scala gatling scala-gatling


    【解决方案1】:

    您的回复内容确实是""。不是空的,而是字面上的两个引号。如果您的支票是bodyString is "\"\"",则测试将通过。

    我的猜测是,在你编写的服务器代码中,你 returned "" 是一个空字符串。 HTTP 框架对其进行 json 编码并在响应中发送两个双引号。

    你可以turn on logging for Gatling看得更清楚。

    【讨论】:

      【解决方案2】:

      我无法重现(尝试使用 master 分支)所以我怀疑您实际上有一些不可打印的字符,无论是在您的响应正文中,还是在您的预期结果中。

      请检查您的内容长度和模拟。

      如果这不是问题,请提供Short, Self Contained, Correct (Compilable), Example

      关于InputStreamBody(getClass.getResourceAsStream("/rungraph_req_body.json"))的旁注:过于复杂,您应该使用RawFileBody("rungraph_req_body.json")

      【讨论】:

      • 我的怀疑是编写的代码返回了一个空字符串,并且框架 json 将该空字符串编码为 "" 的正文字符串。
      • @GeorgeLeung 不,bodyString 肯定会将响应正文解析为字符串。
      • “框架”不是指 Gatling 框架,而是提问者使用的 HTTP 框架。我对 Gatling 框架的合理性很有信心。
      • 支持我猜测的一个证据是错误消息,其中包含引号。它们似乎不是由 Gatling 生成的,更有可能是通过网络发送的。
      • @GeorgeLeung 哦,我的错,你完全正确!这里的响应不是空字符串,而是 "",其 Content-Length 为 2,否则 Gatling 会打印 found 。请随意发布您的正确答案!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多