我们能否实现';过滤示例';基于karate.env

我们能否实现';过滤示例';基于karate.env,karate,Karate,我们是否能够实现我们现有的“示例过滤” 下面的示例: * def request = { item: '#(item)' } Examples: |karate.env: |item | |@dev |778983-110833-110834| |@qa |848079-419456-419457| 我们需要实现的是: 空手道DSL基于 karate.env的当前值 空手道必须创建一个请求={项: “77898

我们是否能够实现我们现有的“示例过滤”

下面的示例:

* def request = { item: '#(item)' }
Examples:
|karate.env:     |item                |
|@dev            |778983-110833-110834|
|@qa             |848079-419456-419457|
我们需要实现的是:

  • 空手道DSL基于 karate.env的当前值
  • 空手道必须创建一个请求=
    {项:
    “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|
    
    功能:
    背景:
    *url'https://reqres.in/api'
    *配置标题={'Content Type':'application/json'}
    情景大纲:
    *def reqJson={“名称”:“名称”,“作业”:“”}
    和路径“用户”
    并请求reqJson
    当方法发布时
    然后是状态201
    并匹配response.job=''
    @发展
    示例:
    |项目|
    |   111|
    @质量保证
    示例:
    |项目|
    |   222|
    
    在命令行上触发environment=qa:
    mvn测试-Dcucumber.options=“--tags@qa”
    在命令行上触发environment=dev:
    mvn测试-Dcucumber.options=“--tags@dev”


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

    我想您正在寻找以下内容:

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

    请记住,空手道可以读取JSON(或CSV)文件,您可以使用它来驱动
    示例:

    最后,我不推荐这么多,但如果您希望实现不为特定
    karate.env
    值运行测试的逻辑,您可以通过以下方式执行此操作:


    只需在
    场景之后添加该行:
    ,测试将在需要时跳过。

    谢谢,我会尝试一下:我在上面的问题中添加了一个工作示例,请验证它,并确认是否有方法在标记中使用“karate.env”来实现它。我查看了文档上的“条件逻辑”。标签在这里更适合我们的用例。我希望标签中有@karate.env=dev这样的东西,但我觉得这是一个太多的问题了。:)@Sud-空手道是开源的,你可以贡献代码而不是问:p对于那些登陆这里尝试这样做的人,我建议另一种方法,你可以调用这样的功能:
    *调用read('foo-'+karate.env+'.feature')
    -记住空手道可以读取JSON(或CSV)文件,你可以使用它来驱动
    示例
    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')
    
    * if (karate.env == 'prod') karate.abort()