【问题标题】:KARATE: Loop over a feature file fails when I call a feature file with scenario outline空手道:当我使用场景大纲调用功能文件时,循环功能文件失败
【发布时间】:2018-09-22 23:28:37
【问题描述】:

我有 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:[称为.feature]

Feature: Test loop over in Karate framework

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

当我使用 read in 'Calling.feature' 调用 'Called.feature' 时,我期望它会在两个功能文件中的所有示例中迭代使用

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

有没有办法强制空手道完成被调用的所有场景示例???

以下是日志:

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)

【问题讨论】:

    标签: karate


    【解决方案1】:

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

    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

    【讨论】:

    • @RakeshMahendrakar 好的。上面的例子证明它按预期工作。如果您仍有问题,请提交错误,并确保包含完整的工作示例以进行复制。
    • 我仍然有问题..在我接受或关闭这个问题之前会进行更多研究..
    • @RakeshMahendrakar 然后请删除它并在确定时创建问题。或提交适当的详细信息:github.com/intuit/karate/wiki/How-to-Submit-an-Issue
    • @RakeshMahendrakar 关闭了问题,因为您没有按照说明操作
    • 在 0.8.0 版上测试并运行良好。感谢您和您的团队的照顾。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多