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

