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

如何在karate-config.js中校验API状态码并实现条件调用?

问题根因

if分支不生效的核心原因是:karate.callSingle()返回的结果对象中默认不存在status属性,你读取的result.status实际是undefined,和200对比永远为false,所以无法进入分支。
Karate调用子feature返回的结果对象里,请求的响应状态码默认保存在responseStatus字段中,如果你要使用status字段,需要在被调用的子feature里主动定义导出。

解决方案

任选以下一种方式修改即可:

方案1:直接使用默认的响应状态码字段

把if判断的条件修改为读取responseStatus:

var result = karate.callSingle('classpath:util/users.feature@test1',config);
config.userId = result.response.value[0].id;
karate.log("User Id is -------------" + config.userId)
// 替换为读取默认的responseStatus字段
if( result.responseStatus == 200 ) 
{
  var result1 = karate.callSingle('classpath:util/users.feature@test2',config);
  config.unitId = result1.response.value[0].id;
  karate.log("Unit Id is -------------" + config.unitId)
}

方案2:在子feature中主动导出status字段

打开classpath:util/users.feature文件,在标注为@test1的场景末尾添加一行代码,主动把响应状态码赋值给status字段导出:

# @test1场景的原有逻辑不变,末尾新增下面这行
* def status = responseStatus

修改后你原来的if判断代码不需要改动即可正常生效。

验证方法

如果修改后还是有问题,可以在if判断前加一行日志打印完整的返回结果,确认字段是否符合预期:

karate.log('第一个接口返回的完整结果:', result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:24:02