Karate框架如何无需编写JS方法实现数值数组容差匹配
Karate 自带语法实现数组容差匹配方案
完全可以仅通过Karate原生match语法实现对应位置的±0.1容差校验,不需要额外编写独立的JavaScript比对方法。
具体实现
Karate的match each遍历匹配语法内置了索引、当前元素的占位变量,支持直接在匹配谓词中写判断逻辑,参考示例:
// array1为API响应中获取的目标数组,array2为提前计算得到的参考数组 * def array1 = response.dataList * def array2 = calculatedList // 严格按索引一一匹配,容差±0.1(开区间) * match each array1 == '#? _ > array2[__] - 0.1 && _ < array2[__] + 0.1'
规则说明
#?是Karate的谓词匹配前缀,后面直接跟布尔判断表达式即可- 表达式中
_代表当前遍历到的array1的元素,也就是对应位置的array1[i] - 表达式中
__是match each遍历时内置的当前索引值,也就是i,可以直接用来取array2同位置的参考值 - 该写法会自动校验两个数组长度完全一致,不需要额外加长度判断逻辑
- 如果需要调整容差,直接修改数值即可;如果要做闭区间匹配(包含边界值),把判断符换成
>=、<=就行 - 容差值也可以提前定义为变量复用,比如提前写
def gap = 0.1,匹配表达式里直接引用gap即可,不需要硬编码数值。
内容的提问来源于stack exchange,提问作者I. Tennant
相关产品推荐
相关产品推荐

