如何正确使用 checkIf 和多个 jsonPath 提取
How to properly use checkIf with multiple jsonPath extractions
我有发送 GET 请求的情况,有时可能 return 404,我不想在最终报告中将其报告为错误。
此外,如果该请求成功,我需要从 json 响应中提取多个值。
通常,我想使用的这 2 个动作在独立使用时对我来说效果很好,即
从响应中提取多个 json 值:
jsonPath("$..usrn").saveAs("usrn"),
jsonPath("$..street_descriptor").saveAs("street_descriptor"),
....
)
处理 404:
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
您可以使用可选检查
.check(
status.in(200, 404),
jsonPath("$..usrn").optional.saveAs("usrn"),
jsonPath("$..street_descriptor").optional.saveAs("street_descriptor")
)
我有发送 GET 请求的情况,有时可能 return 404,我不想在最终报告中将其报告为错误。 此外,如果该请求成功,我需要从 json 响应中提取多个值。
通常,我想使用的这 2 个动作在独立使用时对我来说效果很好,即
从响应中提取多个 json 值:
jsonPath("$..usrn").saveAs("usrn"), jsonPath("$..street_descriptor").saveAs("street_descriptor"), .... )
处理 404:
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
您可以使用可选检查
.check(
status.in(200, 404),
jsonPath("$..usrn").optional.saveAs("usrn"),
jsonPath("$..street_descriptor").optional.saveAs("street_descriptor")
)