11

我有一堆带有各种黄瓜标签的 IT 案例。在我的主要跑步者课程中,我想排除所有具有@one 或@two 的场景。所以,以下是我尝试过的选项 选项 1

@CucumberOptions(tags=Array("~@one,~@two"), .....)

选项 2

@CucumberOptions(tags=Array("~@one","~@two").....

当我尝试使用选项一时,带有@two 标记的测试用例开始执行,而使用第二个选项则没有。根据黄瓜文档,当标签被提及为时,将维护 OR"@One,@Two". 如果是这种情况,为什么不排除以相同的方式工作,即第一个选项?

更新:这段代码是用 scala 编写的。

4

4 回答 4

14

我想我知道它是如何工作的。

@Cucumber.Options(tags = {"~@one, ~@two"})- 这意味着如果“@one 不存在”“@two 不存在”则执行场景

因此,执行以下功能中的所有场景。因为,第一个场景有标签@one,但没有@two。同样,第二个场景有标签@two,但没有@one。第三个场景既没有@one 也没有@two

Feature:
  @one
  Scenario: Tagged one
    Given this is the first step

  @two
  Scenario: Tagged two
    Given this is the first step

  @three
  Scenario: Tagged three
    Given this is the first step

为了测试我的理解,我更新了功能文件如下。有了这个改变,所有没有标签@one 或@two 的场景都被执行了。即@one @three、@two @three 和@three。

Feature:
  @one @two
  Scenario: Tagged one
    Given this is the first step

  @two @one
  Scenario: Tagged two and one
    Given this is the first step

  @one @three
  Scenario: Tagged one and three
    Given this is the first step

  @two @three
  Scenario: Tagged two and three
    Given this is the first step

  @one @two @three
  Scenario: Tagged one two and three
    Given this is the first step

  @three
  Scenario: Tagged three
    Given this is the first step

现在,如果我们进行 AND 操作: - 这意味着仅当@one和 @two 都不存在@Cucumber.Options(tags = {"~@one", "~@two"})时才执行场景。即使其中一个标签在那里,它也不会被执行。所以正如预期的那样,只有@three 的场景被执行了。

于 2015-02-09T20:37:44.367 回答
1

有没有可能它不喜欢数组,也许试试:

@CucumberOptions(tags={"~@one,~@two"}, .....)
于 2015-02-09T19:33:27.600 回答
1

如何排除/忽略一个标签

(这个答案可以帮助其他只想忽略一个标签的用户)

终端:

mvn clean test -Dcucumber.filter.tags="not @one"

六月:

@CucumberOptions(tags = "not @one")
于 2021-04-28T17:42:43.640 回答
0

一般来说,标签背后有以下逻辑:

AND 逻辑是这样的:

tags = {"@Tag1", "@Tag2"} //both tags must be present or:
tags = {"~@Tag1", "~@Tag2"} // both tags must not be present, 
//if only one is the stuff will be executed!

OR 逻辑是这样的:

tags = {"@Tag1, @Tag2"} //one of these Tags must be present or:
tags = {"~@Tag1, ~@Tag2"} //one of these Tags must not be present, the Rest will be executed!

但我发现,黄瓜很快就会在标记中支持“或”-运算符并替换逗号+“”-STUFF..,这样更容易表达差异。它会是这样的:

tags = {"@Tag1 or @Tag2"}

来自系统的原始消息是:

Support for '@tag1,@tag2' will be removed from the next release of Cucumber-JVM. Please use '@tag or @tag2' instead

希望这对将来也有帮助。:)

于 2020-04-29T14:19:02.860 回答