首页 文章

在单独的功能文件中重用Scenario Outline中的示例

提问于
浏览
1

我将如何在单独的.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: 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场景执行多次 . 我期望它为ids.json中的json数组中的每个对象执行,如https://github.com/intuit/karate#data-driven-features中所述

1 回答

  • 1

    问题是你根本不会使用 Scenario OutlineExamples . 作为JSON数组循环测试数据的"Karate Way"在以下方面有所不同:

    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
    

相关问题