如何用Karate matcher验证API响应中嵌套数组的结构?
问题描述
API响应格式如下:
[ { "primaryItem": "some non null string", "secondaryItems": [ { "property_1": "non Null String", "property_2": "non null String" } ] } ]
已编写基础的结构验证匹配器,但需要进一步验证secondaryItems数组中每个元素的结构,求最优实现方式。
解决方案
可以通过Karate的嵌套结构验证或者预定义Schema两种方式实现,具体如下:
方式一:直接嵌套验证
在现有match each表达式中,直接对secondaryItems的数组元素结构做断言:
When method GET Then status 200 And match response != null And match each response contains { primaryItem: '#string', secondaryItems: '#array[*] contains { property_1: "#string", property_2: "#string" }' }
这里#array[*] contains ...表示数组内的每一个元素都必须包含指定的两个字符串类型属性。
方式二:预定义Schema复用
如果次级结构较复杂或需要多处复用,可以先定义Schema变量,再在匹配器中引用:
* def secondaryItemSchema = { property_1: '#string', property_2: '#string' } When method GET Then status 200 And match response != null And match each response contains { primaryItem: '#string', secondaryItems: '#array each secondaryItemSchema' }
这种方式更清晰,也便于后续维护和复用结构规则。
内容的提问来源于stack exchange,提问作者ThrowableException
相关产品推荐
相关产品推荐

