Karate测试框架:如何判断响应中是否存在指定参数?
REST API错误数组的测试逻辑优化
针对你的REST API响应体可能包含gg.Errors数组的场景,调整测试逻辑以覆盖三种指定情况:
优化后的测试代码
* def errors = response['gg:CreateClientRS']['gg:Errors'] * if (errors) { * def errorTags = errors['gg:Error'][*]['@Tag'] * match errorTags contains 'org.codehaus.jackson.JsonParseException' }
场景对应逻辑
- 场景1:无错误数组
errors变量会被赋值为null,if代码块不会执行,直接进入下一步测试。 - 场景2:有错误数组且包含指定异常
提取所有错误的@Tag值组成数组,match断言验证数组中包含org.codehaus.jackson.JsonParseException,断言通过后进入下一步。 - 场景3:有错误数组但不包含指定异常
match断言失败,测试直接终止并抛出错误。
逻辑说明
- 先通过
response['gg:CreateClientRS']['gg:Errors']安全获取错误节点,避免直接访问不存在的节点导致空指针报错; - 使用
[*]语法批量提取所有错误的@Tag值,相比只取第一个元素,能兼容多个错误的场景; - 用
contains断言验证目标异常是否存在,满足测试要求。
内容的提问来源于stack exchange,提问作者Stéphane GRILLON
相关产品推荐
相关产品推荐

