如何在Karate框架中针对API的responseCode添加等于和不等于的if判断条件
问题根因
你代码中的Then status 200是硬编码的断言语句,当API返回非200状态码时,这行断言会直接触发用例失败,用例执行流程会立刻终止,后续的两个if分支逻辑完全没有运行机会,自然无法触发responseStatus != 200的分支。
解决方法
调整代码执行顺序,先完成状态判断和回调逻辑,最后再执行状态断言即可,你还可以把两个独立的if判断合并为if-else分支,逻辑更严谨。修改后的参考代码如下:
@test1 Scenario: create new users And path 'users' And request requestBody When method post # 先执行状态判断和上报逻辑,不受断言失败影响 * if (responseStatus == 200) { karate.call('classpath:util/status.feature@testexecution', { value : '123' }) } else { karate.call('classpath:util/status.feature@testexecution', { value : 'xyz' }) } # 最后执行状态断言,符合原用例的校验要求 Then status 200
如果你的测试场景需要兼容非200的合法返回、不希望断言直接终止用例,也可以临时关闭断言自动中止配置:* configure karate.abortOnFailure = false,在所有逻辑执行完成后再手动控制用例状态。
内容的提问来源于stack exchange,提问作者Maddy
相关产品推荐
相关产品推荐

