Karate框架configure continueOnStepFailure调用Feature时失效问题
Karate框架continueOnStepFailure在call调用时未生效的问题解决
问题原因
continueOnStepFailure是场景级配置,仅对当前场景内的步骤生效。被调用场景(@Test1)内部开启该配置后,只会让@Test1自身在步骤失败时继续执行,但@Test1的整体执行结果仍会标记为失败。- 外层场景(@Test3)未配置
continueOnStepFailure,当call read('./poc.feature@Test1')这一步骤因被调用场景失败而标记为失败时,Karate会终止@Test3的后续执行,导致无法运行call read('./poc.feature@Test2')。
解决方案
方案一:给外层场景配置continueOnStepFailure
直接在@Test3中开启该配置,让外层场景在步骤失败时继续执行后续操作:
@Test3 Scenario: Test3 * configure continueOnStepFailure = { enabled : true, continueAfter: true, keywords : ['match', 'call']} * def result = call read('./poc.feature@Test1') * call read('./poc.feature@Test2')
方案二:让被调用场景的失败不影响外层call步骤状态
如果不希望被调用场景的失败导致外层call步骤标记为失败,可以用try块包裹被调用场景内的失败步骤,确保被调用场景整体执行结果为成功:
修改@Test1的代码:
@Test1 Scenario: Test1 * configure continueOnStepFailure = { enabled : true, continueAfter: true, keywords : ['match']} * def equal1 = 'bbb' * def notEqual1 = 'ccc' * def equal2 = 'bbb' * try { match equal1 == notEqual1 } * call read('./poc.feature@Test2')
这样@Test1的执行结果不会因match失败而标记为失败,外层@Test3的call步骤会正常完成,后续的call @Test2也能执行。
内容的提问来源于stack exchange,提问作者kritsadakorn scb
相关产品推荐
相关产品推荐

