在单独的功能文件中重用场景大纲中的示例

时间:2018-09-25 13:54:45

标签: karate

如何在语法上将单独的.feature文件中的表用于多个.feature文件中的多个方案大纲? 我正在努力只在一个地方更新测试数据,并获得所有好处。

我目前有一个Scenario Outline和一个简单的Examples表,如下所示:

Given path 'GetIds'
* header Authorization = auth
* request { Id: <Id> }
* method post
* status 200

Examples:
| Id  |
| 'a' |
| 'b' |

查看Karate - Possible to put scenario in a loop?结果中的链接似乎是我应该看的地方,但是我无法推断我的Examples.feature文件应该是什么样子。

编辑: 下面的Cucumber示例对我来说似乎很清楚(从Cucumber: Scenario Outline reusing examples table明显地被盗了)

Examples:{'datafile':'resources/testdata.txt'}

但在空手道中显然无效。

Edit2: 创建一个单独的ids.json文件并通过* def ids = read('ids.json')进行读取即可。 像这样使用它:

Feature: Dummy
Background:                                    
* def ids = read('ids.json')

Scenario: GetIds
* print ids
* print ids.id
* match each ids contains { id: #string }

上面给出的将以json格式传递旧Examples表中的数据。 但是我没有在* print ids.id上获得每个id的输出,并且我看不到GetIds场景执行了多次。 我希望它能对{s {3}}

中所述的ids.json中的json数组中的每个对象执行

1 个答案:

答案 0 :(得分:1)

问题是您根本不会使用Scenario OutlineExamples。将测试数据循环为JSON数组的“空手道方式”在以下方面有所不同:

Scenario Outline --> a second feature file
Examples         --> a JSON array

所以我要做的是:

* def ids = read('ids.json')
* def result = call read('called.feature') ids

called.feature中:

@ignore
Feature:

Scenario:
    * print 'id:', id