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

karate.callSingle在两个测试中被执行两次是否为预期行为?

问题解答

这是预期行为,原因如下:

  • karate.callSingle() 的作用范围仅限于同一个 Runner 启动的测试上下文。
  • 你写的两个 @Test 方法是完全独立的测试入口,每个方法都单独调用了 Runner.path().parallel(),相当于启动了两个互不相干的Karate测试执行环境。
  • 第一个测试方法运行时,会初始化自己的上下文并执行一次 callSingle();第二个测试方法启动新的上下文时,自然会再次触发 callSingle() 逻辑。

如果想让两个测试共享 callSingle() 的执行结果,推荐把两个feature合并到同一个Runner调用中:

@Test
void allIntegrationTests() {
    Results results = Runner.path(
            "classpath:integrationTests/test1.feature",
            "classpath:integrationTests/test2.feature"
        ).parallel(2);
    assertEquals(0, results.getFailCount(), results.getErrorMessages());
}

这样整个测试执行过程中,callSingle() 只会执行一次,所有场景都能复用同一个授权请求头。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 11:25:16