我们能否基于karate.env实现“示例过滤”

时间:2019-04-02 15:00:33

标签: karate

我们可以实现Jbehave上的“示例过滤”

以下示例:

* def request = { item: '#(item)' }
Examples:
|karate.env:     |item                |
|@dev            |778983-110833-110834|
|@qa             |848079-419456-419457|

我们需要实现的是:

  1. 空手道DSL根据以下内容执行“示例”表中的测试: karate.env的当前值
  2. 如果我在开发环境中运行测试,空手道必须创建一个请求= { item: '778983-110833-110834' },如果我在qa中运行测试,则必须创建{ item: '848079-419456-419457' }

我无法通过使用karate.env属性来实现此目的,但可以通过标签来实现,请参考以下示例:

Feature:

  Background:
    * url 'https://reqres.in/api'
    * configure headers = { 'Content-Type': 'application/json'}

  Scenario Outline:
    * def reqJson = { "name": "name", "job": "<item>"}
    And path 'users'
    And request reqJson
    When method post
    Then status 201
    And match response.job == '<item>'

    @dev
    Examples:
      | item |
      |   111|

   @qa
    Examples:
      | item |
      |   222|

在命令行上触发environment = qa:mvn test -Dcucumber.options="--tags @qa"   在命令行上触发environment = dev:mvn test -Dcucumber.options="--tags @dev"

由于我想使用karate.env属性,因此请告诉我是否还有其他实现方法。

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找的是:https://github.com/intuit/karate#tags-and-examples

  

Cucumber / Gherkin语法的一个鲜为人知的功能是能够在许多示例中甚至标记特定的行!您必须为每个标签重复“示例”部分。下面的示例将其与上述高级功能结合在一起。

Scenario Outline: examples partitioned by tag
* def vals = karate.tagValues
* match vals.region[0] == '<expected>'

  @region=US
  Examples:
    | expected |
    | US       |

  @region=GB
  Examples:
    | expected |
    | GB       |