Gatling场景检查响应体的确切内容
Gatling scenario check the exact content of the response body
我正在发送如下请求,并希望响应正文为 ""
(请参阅下面的检查):
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%)
如何检查响应正文是否为空?
我无法重现(用 master 分支试过)所以我怀疑你实际上有一些不可打印的字符,无论是在你的响应正文中,还是在你的预期结果中。
请检查您的内容长度和模拟。
如果这不是问题,请提供 Short, Self Contained, Correct (Compilable), Example。
关于 InputStreamBody(getClass.getResourceAsStream("/rungraph_req_body.json"))
的附注:过于复杂,您应该只使用 RawFileBody("rungraph_req_body.json")
。
您的回复正文确实是""
。不是空的,而是字面上的两个引号。如果您的检查是 bodyString is "\"\""
.
,则测试将通过
我的猜测是,在您编写的服务器代码中,您 return
ed ""
,一个空字符串。并且 HTTP 框架 json 对其进行了编码,并在响应中发送了两个双引号。
可以turn on logging for Gatling看得更清楚
我正在发送如下请求,并希望响应正文为 ""
(请参阅下面的检查):
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%)
如何检查响应正文是否为空?
我无法重现(用 master 分支试过)所以我怀疑你实际上有一些不可打印的字符,无论是在你的响应正文中,还是在你的预期结果中。
请检查您的内容长度和模拟。
如果这不是问题,请提供 Short, Self Contained, Correct (Compilable), Example。
关于 InputStreamBody(getClass.getResourceAsStream("/rungraph_req_body.json"))
的附注:过于复杂,您应该只使用 RawFileBody("rungraph_req_body.json")
。
您的回复正文确实是""
。不是空的,而是字面上的两个引号。如果您的检查是 bodyString is "\"\""
.
我的猜测是,在您编写的服务器代码中,您 return
ed ""
,一个空字符串。并且 HTTP 框架 json 对其进行了编码,并在响应中发送了两个双引号。
可以turn on logging for Gatling看得更清楚