如何排除黄瓜标签
How to exclude cucumber tags
我有一堆带有各种黄瓜标签的 IT 案例。在我的主要跑步者 class 中,我想排除所有具有 @one 或 @two 的场景。因此,以下是我尝试过的选项 选项 1
@CucumberOptions(tags=Array("~@one,~@two"), .....)
或选项2
@CucumberOptions(tags=Array("~@one","~@two").....
当我尝试使用选项一时,标有@two 的测试用例开始执行,而使用第二个选项则没有。
根据黄瓜文档,当标签被提及为 "@One,@Two"
时,将维护一个 OR。如果是这种情况,为什么不以相同的方式排除工作,即第一个选项?
更新:这段代码是用scala写的。
有没有可能它不喜欢数组,也许试试:
@CucumberOptions(tags={"~@one,~@two"}, .....)
我想我明白了它是如何工作的。
@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 操作:
@Cucumber.Options(tags = {"~@one", "~@two"})
- 这意味着仅当 BOTH @one 和 @two 不存在时才执行场景。即使其中一个标签存在,它也不会被执行。
所以正如预期的那样,只有@three 的场景被执行了。
一般来说,标签背后有以下逻辑:
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!
但是我发现,cucumber 很快就会支持 "or"-Operator 来标记并替换逗号+""-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
希望这对以后也有帮助。 :)
如何exclude/ignore一个标签
(这个答案可以帮助其他只想忽略一个标签的用户)
航站楼:
mvn clean test -Dcucumber.filter.tags="not @one"
联合:
@CucumberOptions(tags = "not @one")
我有一堆带有各种黄瓜标签的 IT 案例。在我的主要跑步者 class 中,我想排除所有具有 @one 或 @two 的场景。因此,以下是我尝试过的选项 选项 1
@CucumberOptions(tags=Array("~@one,~@two"), .....)
或选项2
@CucumberOptions(tags=Array("~@one","~@two").....
当我尝试使用选项一时,标有@two 的测试用例开始执行,而使用第二个选项则没有。
根据黄瓜文档,当标签被提及为 "@One,@Two"
时,将维护一个 OR。如果是这种情况,为什么不以相同的方式排除工作,即第一个选项?
更新:这段代码是用scala写的。
有没有可能它不喜欢数组,也许试试:
@CucumberOptions(tags={"~@one,~@two"}, .....)
我想我明白了它是如何工作的。
@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 操作:
@Cucumber.Options(tags = {"~@one", "~@two"})
- 这意味着仅当 BOTH @one 和 @two 不存在时才执行场景。即使其中一个标签存在,它也不会被执行。
所以正如预期的那样,只有@three 的场景被执行了。
一般来说,标签背后有以下逻辑:
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!
但是我发现,cucumber 很快就会支持 "or"-Operator 来标记并替换逗号+""-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
希望这对以后也有帮助。 :)
如何exclude/ignore一个标签
(这个答案可以帮助其他只想忽略一个标签的用户)
航站楼:
mvn clean test -Dcucumber.filter.tags="not @one"
联合:
@CucumberOptions(tags = "not @one")