Karate框架Schema多值校验:验证city.area.status为ACTIVE/INACTIVE
解决方案
没问题,Karate内置了专门处理枚举值校验的语法,完全能满足你的需求,不用依赖#string类型。最直接的方式是在Schema里用#in操作符来限定city.area.status的有效值范围。
步骤1:修改你的Schema.json
把status字段的固定值"ACTIVE"替换为#in ['ACTIVE', 'INACTIVE'],这样就能校验该字段只能是这两个值中的一个:
{ "name": "#string", "city":{ "area": { "type": "#string", "status": "#in ['ACTIVE', 'INACTIVE']" } } }
步骤2:使用修改后的Schema进行校验
保持你原来的校验逻辑不变,现在match each语句会自动校验city.area.status是否在指定的有效值列表里:
* def Response = call read('testResponse.json') * def objectCatSchema = read('citySchema.json') * match each Response.hits.hits[*]._source == objectCatSchema
额外说明
如果之后需要扩展有效值,只需要在#in的数组里添加新值即可。如果需要更复杂的校验逻辑(比如大小写不敏感匹配),也可以自定义校验函数,但对于你的需求来说,#in是最简单高效的方案。
内容的提问来源于stack exchange,提问作者AutomationTester
相关产品推荐
相关产品推荐

