如何在Karate中匹配map列表并忽略未指定的多余键?
忽略多余键的JSON列表匹配方法
如果你使用的是Karate接口测试框架(从你写的And match response contains语法判断),直接把原写法中的contains替换为contains deep即可实现需求,修改后代码如下:
And match response contains deep """ [{ "a": 1 }] """
规则说明
- 原生
contains对列表内的对象执行全等校验,要求键值对完全匹配,响应里多出来的b字段会直接触发匹配失败 contains deep执行递归部分匹配,只要响应对象包含你指定的所有键值对就会判定匹配成功,所有未声明的多余字段会被自动忽略
如果你使用的是其他测试框架,可以用通用实现思路:
- 遍历响应列表的所有对象,提取出你需要校验的键之后再和预期值做比对
- 也可以使用JSON Schema定义校验规则,只声明需要验证存在的
a字段和对应值要求,未声明的字段默认不做校验,自动实现忽略多余键的效果
内容的提问来源于stack exchange,提问作者Mejmo
相关产品推荐
相关产品推荐

