首页 文章

KARATE:当我调用带有场景轮廓的要素文件时,循环到要素文件失败

提问于
浏览
1

我有2个功能文件,并尝试执行以下操作

**FEATURE 1:**

calling.feature功能:通过调用功能文件来测试循环

Scenario Outline: Testing loop over feature file
* call read('called.feature') { argument = '<arg>' }

Examples:
|arg| 
|"HELLO"|
|"WORLD"|


**FEATURE 2:**

called.feature功能:在空手道框架中测试循环

场景概述:测试循环特征* def callingArg = arg * match''== callingArg示例:| arg2 | | “TEST1” | | “WORLD” |

当我使用'Calling.feature'中的read来调用'Called.feature'时,我希望它会在两个特征文件中的所有示例中使用迭代

但是空手道一旦发现失败就退出,在这种情况下,当参数“HELLO”从Calling.feature传递时,它在'called.feature'的匹配步骤中失败,例如'TEST1',并且从不测试'WORLD' .

Is there a way I can force Karate to complete all the scenario examples in the called.feature???

以下是日志:

calling: [com.intuit.karate.exception.KarateException: path: $, actual: 'HELLO', expected: 'TEST1', reason: not equal
    at com.intuit.karate.StepDefs.matchNamed(StepDefs.java:540)
    at com.intuit.karate.StepDefs.matchEquals(StepDefs.java:526)
    at ✽.* match fileName == "TEST1"(called.feature:16)
, com.intuit.karate.exception.KarateException: path: $, actual: 'WORLD', expected: 'TEST1', reason: not equal
    at com.intuit.karate.StepDefs.matchNamed(StepDefs.java:540)
    at com.intuit.karate.StepDefs.matchEquals(StepDefs.java:526)
    at ✽.* match fileName == "TEST1"(called.feature:16)
, com.intuit.karate.exception.KarateException: feature call (loop) failed: called.feature
caller: calling.feature
items: [{mdbName=HELLO}, {mdbName=WORLD}]
errors:
-------
feature call (loop) failed at index: 0
caller: calling.feature
arg: {mdbName=HELLO}

path: $, actual: 'HELLO', expected: 'TEST1', reason: not equal
-------
feature call (loop) failed at index: 1
caller: calling.feature
arg: {mdbName=WORLD}

path: $, actual: 'WORLD', expected: 'TEST1', reason: not equal
    at com.intuit.karate.Script.evalFeatureCall(Script.java:1636)
    at com.intuit.karate.Script.call(Script.java:1579)
    at com.intuit.karate.Script.callAndUpdateConfigAndAlsoVarsIfMapReturned(Script.java:1669)
    at com.intuit.karate.StepDefs.callAndUpdateConfigAndVars(StepDefs.java:571)
    at ✽.* call read('called.feature') mdbData(calling.feature:9)

1 回答

  • 2

    你的格式很难理解 . 无论如何,空手道应该评估所有示例行,即使出现故障 . 这是一个简单的例子:

    Feature:    
    Scenario Outline:
    
    * call read('called.feature') { a: <value> }    
    
    Examples:
    | value |
    | 1     |
    | 2     |
    | 3     |
    

    called.feature 是:

    Feature:
    Scenario:
    
    * match a == 2
    

    它按预期工作 . 即使第1行和第3行失败,也会执行所有行 . 所以你可能会使用旧版的空手道 . 请升级 .

    编辑:这是固定在0.8.0:https://github.com/intuit/karate/issues/421

相关问题