空手道:当我调用具有场景大纲的功能文件时,循环功能文件失败
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
我有 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