大型响应体中的JSONPath验证(Gatling Scala)

大型响应体中的JSONPath验证(Gatling Scala),scala,gatling,jsonpath,Scala,Gatling,Jsonpath,我有一个非常简单的gatling(开源版本)项目:它从csv feeder中随机选择文件名,然后将文件内容发送到端点,并验证是否返回了200个响应代码。发送的文件和响应都很大。每个响应如下x 500: { "guid1":{ "recordId":"abc", "someThing1":"xyz", "someThing2":"def&quo

我有一个非常简单的gatling(开源版本)项目:它从csv feeder中随机选择文件名,然后将文件内容发送到端点,并验证是否返回了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
 }, 
 ...
}
换句话说,每个响应有1000条记录

如果这不是一个坏主意,我想断言所有1000条记录的“状态”都是200。我会说,如果检查这些200会减慢测试速度,使结果出现偏差,这是一个坏主意

假设可以在不减慢测试速度的情况下完成,我猜我将使用.check(jsonpath(something))来检查查询的计数,如:

$.[?(@.status == '200')]
返回1000。有人能帮忙吗

更新:

尝试了以下方法(jsonpath在jsonpath.com上工作):

在运行时,我遇到以下错误:

jsonPath($.[?(@.status == '200')]).count.is(1000) extraction crashed: end of input expected  
尝试了这个(jsonpath在一些选项卡上工作,但不是gatling scala选项卡)

在运行中,我得到了这个,但我可以在回音中看到格式与上面的格式类似:

jsonPath($..[?(@.status == '200')].recordId).count.is(1000), but actually found 0

您的响应正文将仅为~120kB。您的解析性能应该很好。

您的响应正文只有~120kB。您的解析性能应该很好。

我终于找到了它

.check(jsonPath("$.*[?(@.status == 200)].recordId").ofType[Seq[Any]].count.is(1000))
盖特林标签在这里起了很大的作用:

如前所述,性能下降似乎不是问题。

我终于找到了它

.check(jsonPath("$.*[?(@.status == 200)].recordId").ofType[Seq[Any]].count.is(1000))
盖特林标签在这里起了很大的作用:

如前所述,性能下降似乎不是问题

.check(jsonPath("$.*[?(@.status == 200)].recordId").ofType[Seq[Any]].count.is(1000))