我有一个场景,我发送GET请求,有时可以返回404,我不想在最终报告中将其报告为错误。另外,如果该请求成功,我需要从json响应中提取多个值。
通常我想要使用的那2个动作对我来说在使用时是很好的,即
jsonPath("$..usrn").saveAs("usrn"),
jsonPath("$..street_descriptor").saveAs("street_descriptor"),
....
)
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")
)