我有2个功能文件,正在尝试执行下面的操作
**FEATURE 1:**
calling.feature feature:通过调用特性文件进行测试循环
Scenario Outline: Testing loop over feature file
* call read('called.feature') { argument = '<arg>' }
Examples:
|arg|
|"HELLO"|
|"WORLD"|
**FEATURE 2:**
feature feature:空手道框架中的测试循环
当我在“calling.feature”中使用read调用“called.feature”时,我希望它将在两个功能文件中的所有示例中迭代使用
但是空手道一旦发现失败就会退出,在本例中,当参数“hello”从calling.feature传递时,它在“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)
你的格式很难理解。无论如何,Karate应该计算所有示例行,即使有一个失败。这里有一个简单的例子:
Feature:
Scenario Outline:
* call read('called.feature') { a: <value> }
Examples:
| value |
| 1 |
| 2 |
| 3 |
而称为d.feature
是:
Feature:
Scenario:
* match a == 2
和预期的一样工作。即使第1行和第3行失败,也会执行所有行。所以你可能在玩一个老版本的空手道。请升级。
编辑:这在0.8.0:https://github.com/intuit/karate/issues/421中已经修复
下面是我的示例功能文件: 我将期待失败的这个功能,并转移到下一个。
空手道是否支持这样一个特性:您可以在一个场景中定义一个变量,并在同一个特性文件中在其他场景中重用它。我试着做同样的事,但得到一个错误。在同一个特性文件中重用变量的最佳方法是什么? 错误:
测试运行程序文件-
function参数是一个数组。现在我将如何在一个特性文件中调用函数。当我尝试下面的代码 我收到以下错误: 中读取属性“length” 我已经打印了并且它正确地出现在print语句中。
我想使用资源文件夹中的所有图像运行我的场景。这意味着每次使用不同的图像访问相同的api(首先将它们转换为Base64编码)。但是,由于这些图像已经在资源文件夹中,因此在csv中保存一些名称或记录以供场景大纲使用是没有意义的。我可以在示例部分调用我自己的函数(有代码从资源文件夹中获取图像并将其转换为base64),这样对于每个图像,它都会再次命中相同的api。
我的项目的src/main/resources文件夹中有名为:TransactionExpiry.properties的属性文件。 我可以使用@PropertySource(“classpath:/transactionexpiry.properties”)读取代码中的属性 现在,我不想添加应用程序范围,并添加特定于环境的配置文件,如transactionexpiry-dev.properties