【问题标题】:How to run Cucumber with OR AND Multiple tags如何使用 OR AND 多个标签运行 Cucumber
【发布时间】:2014-05-28 15:58:36
【问题描述】:

我有黄瓜场景和例子。示例分为使用多个标签,如下所示:

Feature: ...
  Scenario Outline: ...
    ...    
    @Admin @INT
      Examples:
      ...    
    @Admin @EXT
      Examples:
      ...
    @User @EXT
      Examples:
      ...
    @User @INT
      Examples:
      ...

要运行带有标签@Admin@EXT 的场景,我使用

...tags = {"@Admin","@EXT"}...

如何使用

运行场景

{"@Admin","@EXT"} && {"@User","@INT"}, {"@Admin","@EXT"} || {"@User","@INT"}

【问题讨论】:

  • {"@Admin","@EXT"} && {"@User","@INT"} 是否应该运行带有所有四个标签的场景?
  • 不,我想查找并运行标记有@Admin AND @EXT(2 个标签)和@User AND @INT(2 个标签)的场景。与@Admin AND @EXT AND @User AND @INT不同。
  • 你可以定义两个不同的运行器(每个有 2 个标签)并运行这两个?

标签: cucumber cucumber-jvm


【解决方案1】:

此更改已引入 cucumber-jvm 2.0.0 (2017-08-29)

支持Tag Expressions(#1035 Björn Rasmusson 的一部分)

Migrating from old style tags
--tags @dev stays the same
--tags ~@dev becomes --tags 'not @dev'
--tags @foo,@bar becomes --tags '@foo or @bar'
--tags @foo --tags @bar becomes --tags '@foo and bar'
--tags ~@foo --tags @bar,@zap becomes --tags 'not @foo and (@bar or @zap)'

所以也许是这样的:

-Dcucumber.options="--tags '(@Admin and @EXT) or (@User and @INT)'"

编辑

对于@CucumberOptions,上面看起来像:

tags = {"@tag"} 不变

tags = {"~tag"} 变为 tags = {"not tag"}

tags = {"@tag1,@tag2") 变为 tags = {"@tag1 or @tag2"}

tags = {"@tag1","@tag2"} 变为 tags = {"@tag1 and @tag2"}

tags = {"@tag1","@tag2,@tag3"} 变为 tags = {"@tag1 and (@tag2 or @tag3)"}

【讨论】:

  • 老问题,但其他人可能有。
  • 这很有趣。
  • @MikeJRamsey56 感谢这篇文章。我犯了一个小错误,错过了 '(单引号),这浪费了我一天的时间,试图弄清楚它为什么不起作用。但你的反应奏效了。谢谢
猜你喜欢
  • 1970-01-01
  • 2017-09-10
  • 1970-01-01
  • 2014-02-24
  • 2022-12-18
  • 1970-01-01
  • 1970-01-01
  • 2016-06-05
  • 1970-01-01
相关资源
最近更新 更多