You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Karate中将失败的API调用断言为测试通过

解决Karate中网络异常的断言问题

当Karate遇到UnknownHostException这类网络级错误时,默认会直接终止脚本执行,无法走到后续断言步骤。要实现预期的负面测试,可以通过以下两种方式处理:

方式一:关闭请求失败自动终止(推荐)

通过configure abortOnFailure = false让脚本在请求失败后继续执行,然后断言错误状态和异常信息:

Given configure abortOnFailure = false
And url 'www.secreturl.com'
And header Content-Type = 'application/json; charset=utf-8'
When method GET
Then match responseStatus == 'error'
And match responseError contains 'UnknownHostException'
  • abortOnFailure = false:禁用Karate默认的请求失败中断逻辑,允许脚本执行后续断言。
  • responseError:Karate自动捕获的请求异常信息,可用于验证具体错误类型。

方式二:用脚本块捕获异常

通过JavaScript匿名函数包裹请求逻辑,捕获异常后返回结果再断言:

* def requestResult = karate.call(
    '(function() { \
        try { \
            karate.get(\'www.secreturl.com\', { headers: { \'Content-Type\': \'application/json; charset=utf-8\' } }); \
            return { success: true }; \
        } catch (e) { \
            return { success: false, errorMsg: e.message }; \
        } \
    })()'
)
* match requestResult.success == false
* match requestResult.errorMsg contains 'UnknownHostException'

这种方式更灵活,适合需要自定义异常处理逻辑的场景。

内容的提问来源于stack exchange,提问作者hungryhippos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 09:05:27