我们能否基于空手道实现对示例的过滤。 [英] Can we achieve 'Filtering on Examples' based on karate.env

查看:22
本文介绍了我们能否基于空手道实现对示例的过滤。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们是否可以对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' }如果我在开发环境中运行测试&;{ item: '848079-419456-419457' }如果我在QA中运行测试。

我无法使用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|
在命令行上触发环境=qa:mvn test -Dcucumber.options="--tags @qa" 在环境=dev的命令行上触发:mvn test -Dcucumber.options="--tags @dev"

既然我想使用空手道.env属性,请让我知道是否有其他方法来实现它。

推荐答案

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

黄瓜/小黄瓜语法的一个鲜为人知的功能是能够在一系列示例中标记特定的行!您必须为每个标记重复示例部分。下面的示例将此功能与上述高级功能相结合。

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       |

编辑:对于那些在这里尝试这样做的人,我建议使用另一种方法,您可以这样调用功能:

* call read('foo-' + karate.env + '.feature')

记住,空手道可以读取JSON(或CSV)文件,您可以用它来驱动Examples:https://github.com/intuit/karate#dynamic-scenario-outline

最后,我不建议这么做--但如果您想实现不对特定karate.env值运行测试的逻辑,可以通过karate.abort()

来实现
* if (karate.env == 'prod') karate.abort()

只需将该行添加到Scenario:之后,即可在需要时跳过测试。

这篇关于我们能否基于空手道实现对示例的过滤。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆