ReadyAPI中如何简化Groovy断言校验JSON响应指定code值的写法
Groovy接口断言优化实现
你原有断言存在逻辑缺陷:直接对完整响应字符串做包含校验,若响应其他字段意外出现目标编码会触发误判。以下是更精准、简洁的实现方案:
完整代码
import groovy.json.* def response = context.expand( 'RequestResponseHere' ) def json = new JsonSlurper().parseText(response) // 定义合法code取值列表,按需调整即可 def validCodeSet = ['CODE1', 'CODE2', 'CODE3', 'CODE4'] as Set // 提取taskList下所有code值 def actualCodeSet = json._embedded.taskList*.code as Set // 校验所有返回的code都属于合法范围,失败时直接输出非法值 assert actualCodeSet.every { it in validCodeSet } : "检测到非法code: ${actualCodeSet - validCodeSet}"
可选扩展
如果你的需求是同时要求所有合法code必须都出现在响应中,可追加以下断言:
assert validCodeSet.every { it in actualCodeSet } : "响应缺失预期code: ${validCodeSet - actualCodeSet}"
方案优势
- 逻辑精准:直接定位
taskList下的code字段校验,不受其他字段干扰 - 维护便捷:只需修改
validCodeSet即可调整合法取值范围,无需新增多行星等断言 - 报错清晰:断言失败时直接输出不符合要求的code值,无需逐行排查问题
内容的提问来源于stack exchange,提问作者Cata
相关产品推荐
相关产品推荐

