gpt4 book ai didi

java - 如何使用 Rest assured 验证数组中元素的正确值

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:39:49 25 4
gpt4 key购买 nike

我正在尝试验证我的响应的某些属性,如 rest assured tutorial 中所示.

问题是,当测试数组内的属性时,我可以像示例中那样验证它们是否出现,但不能验证它们是否与元素的其他属性匹配。

为了澄清,假设我收到了教程的回复(添加了“奖品”)

{
"lotto":{
"lottoId":5,
"winning-numbers":[2,45,34,23,7,5,3],
"winners":[{
"winnerId":23,
"prize":5000,
"numbers":[2,45,34,23,3,5]
},{
"winnerId":54,
"prize":100000,
"numbers":[52,3,12,11,18,22]
}]
}
}

我可以验证 winnerIds 为 23 和 54

expect().
body("lotto.lottoId", equalTo(5)).
body("lotto.winners.winnderId", hasItems(23, 54)).
when().
get("/lotto");

我可以验证奖品是 500 和 100000,但我无法验证 winnerId=23 的奖品是 500,而 winnerId=54 的奖品是 100000。响应将显示 winnerId=23,奖品=100000,测试将通过。

我不能使用 contains()因为数组中的元素可以按任何顺序出现,所以我需要用户 containsInAnyOrder() .

最佳答案

据我所知,Rest-Assured 只允许验证直接的值验证。对于条件验证,您必须改用 jsonpath:

$.lotto.winners.[?(@.winnerId==23)].prize

以上jsonpath搜索lotto下的winners数组,选择winnerId==23的数组项获取奖品;

expect().
body("$.lotto.winners.[?(@.winnerId==23)].prize", equalTo(5000)).
when().
get("/lotto");

SO 中还有其他您可以引用的帖子是 herehere

试试这个 link 中的表达式

JsonPath表达式语法可以查到here .

关于java - 如何使用 Rest assured 验证数组中元素的正确值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35297291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com