如何正确使用checkIf与多个jsonPath提取

问题描述 投票:0回答:1

我有一个场景,我发送GET请求,有时可以返回404,我不想在最终报告中将其报告为错误。另外,如果该请求成功,我需要从json响应中提取多个值。

通常我想要使用的那2个动作对我来说在使用时是很好的,即

  1. 从响应中提取多个json值: jsonPath("$..usrn").saveAs("usrn"), jsonPath("$..street_descriptor").saveAs("street_descriptor"), .... )
  2. 处理404s:
  status.saveAs("responseStatus"),
  checkIf(session => session("responseStatus").as[Int] == 200) {
    substring(usualHeader).exists
  },
  checkIf(session => session("responseStatus").as[Int] == 404) {
    substring(errorHeader).exists
  }

但是,当我尝试将我能够做的两个动作组合起来时,它们可以编译并实际提取数据,就是遵循代码。但我觉得可以在没有这种重复的情况下完成

.check(
  status.saveAs("responseStatus"),
  checkIf(session => session("responseStatus").as[Int] == 200) {
    jsonPath("$..usrn").saveAs("usrn")
  },
  checkIf(session => session("responseStatus").as[Int] == 200) {
    jsonPath("$..street_descriptor").saveAs("street_descriptor")
  },
   ...
  checkIf(session => session("responseStatus").as[Int] == 404) {
    substring("404 error").exists
  }

我正在使用Gatling 3.0.3

scala gatling scala-gatling gatling-jsonpath
1个回答
2
投票

你可以使用可选的检查

.check(
  status.in(200, 404),
  jsonPath("$..usrn").optional.saveAs("usrn"), 
  jsonPath("$..street_descriptor").optional.saveAs("street_descriptor")
)
© www.soinside.com 2019 - 2024. All rights reserved.