如何在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
相关产品推荐
相关产品推荐

