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

Karate 1.3中@setup与@env执行顺序疑问:@setup是否无视@env触发?

Karate 1.3中@setup与@env注解的执行逻辑说明

是的,这是Karate 1.3版本的设计行为。

在Karate 1.3中,@setup场景的执行优先级高于@env注解的过滤逻辑。框架会先加载所有.feature文件中的@setup场景并执行,之后才会根据当前设置的环境变量评估@env注解,过滤掉不符合条件的普通场景(非@setup类型)。因此即使某个.feature文件的@env标签与当前运行环境不匹配,它的@setup场景依然会被执行。

以你的示例为例:当env设置为prod时,cb.feature的@env=Unit,itg,cat与当前环境不匹配,它的Scenario Outline会被过滤不执行,但@setup场景会先于@env评估步骤运行,所以你会看到对应的日志输出。

如果需要让@setup场景也受@env控制,可以通过以下两种方式处理:

  • 在@setup内部添加环境判断:在@setup场景开头加入环境校验逻辑,不匹配则终止执行:

    @setup
    Scenario:
        * def currentEnv = karate.env
        * if (!(currentEnv in ['Unit', 'itg', 'cat'])) karate.abort()
        * print '***** SETUP cb.feature ********'
        * json datesUnderTest = karate.properties['dates.under.test']
    
  • 升级到Karate 1.4+版本:Karate 1.4及后续版本调整了执行逻辑,@env的过滤会先于@setup场景执行,只有符合环境条件的.feature文件,其@setup才会被触发运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 09:10:06