空手道:当我调用具有场景大纲的功能文件时,循环功能文件失败

KARATE: Loop over a feature file fails when I call a feature file with scenario outline

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

特点 1:[calling.feature]

Feature: Test loop over by calling a feature file

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

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

特点 2:[called.feature]

Feature: Test loop over in Karate framework

Scenario Outline: Testing loop over feature
* def callingArg = arg
* match '<arg2>' == callingArg
Examples:
|arg2| 
|"TEST1"|
|"WORLD"|

当我使用读入 'Calling.feature' 调用 'Called.feature' 时,我期望它会遍历两个功能文件中的所有示例

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

测试

有什么方法可以强制空手道完成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)

您的格式很难理解。无论如何,即使失败,空手道也应该评估所有示例行。这是一个简单的例子:

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