[英]JSONPath validations in large response bodies (Gatling Scala)
我有一个非常简单的 gatling(开源版本)项目:它从 csv 馈送器中随机选择文件名,然后将文件的内容发送到端点并验证它是否收到了 200 个响应代码。 发送的文件和响应一样大。 每个响应都是这样 x 500:
{
"guid1":{
"recordId":"abc",
"someThing1":"xyz",
"someThing2":"def",
"status":200,
"message":null
},
"guid2":{
"recordId":"ghi",
"someThing1":"klm",
"someThing2":"nop",
"status":200,
"message":null
},
...
}
换句话说,每个响应都有 1,000 条记录。
如果这不是一个坏主意,我想断言所有 1,000 条记录的“状态”都是 200。我会说如果检查这 200 条记录会使测试速度减慢到扭曲结果的地步,这是一个坏主意。
假设它可以在不减慢测试速度的情况下完成,我猜我会使用 .check(jsonpath(something)) 来检查查询的计数,例如:
$.[?(@.status == '200')]
返回 1000。有人可以帮忙吗?
更新:
试过这个(jsonpath 在 jsonpath.com 上工作):
.check(jsonPath("$.[?(@.status == '200')]").count.is(1000))
运行时,我收到此错误:
jsonPath($.[?(@.status == '200')]).count.is(1000) extraction crashed: end of input expected
试过这个(jsonpath 在一些https://jsonpath.herokuapp.com/选项卡上工作,但不是加特林 scala 选项卡)
.check(jsonPath("$..[?(@.status == '200')].recordId").count.is(1000))
在运行时,我得到了这个,但我可以在回显的响应中看到格式类似于上面的格式:
jsonPath($..[?(@.status == '200')].recordId).count.is(1000), but actually found 0
您的响应正文将只有〜120kB。 就解析性能而言,您应该没问题。
我终于找到了。
.check(jsonPath("$.*[?(@.status == 200)].recordId").ofType[Seq[Any]].count.is(1000))
这里的 Gatling 选项卡帮助很大: https://jsonpath.herokuapp.com/
正如Stéphane LANDELLE 所指出的,性能下降似乎不是问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.