http://blog.csdn.net/suregirls00/article/details/70238141
Tag标签
Cucumber 支持为 Scenario 指定标签(tag),tag 是以“@”字符开头的一个单词,用来表述被修饰对象(可以是 feature,可以是 scenario,可以是 scenario outline 甚至可以是 scenario outline 下的 examples)所属的类别。Tag 可以是一个,也可以是多个,Cucumber 本身并不限制 tag 的个数。
Tag 位置解析
Tag 所修饰对象 | 表述的意义 |
---|---|
Feature | 该 Feature 文件中的所有 Scenario 和 Scenario Outline 都会继承修饰在 Feature 的 tag |
Scenario / Scenario Outline | 表示 tag 适用于 Scenario/Scenario Outline,Scenario Outline 下的 Examples 会继承定义在其上的 tag |
Examples | 只对 Scenario Outline 及当前的 Examples 有效 |
按照 tag 指定测试用例
1)运行指定的单个 tag 对应的测试用例:
@CucumberOptions(tags = {"@test"}, features = {…略…})
该配置只会运行 features 中那些被标记为“@test”tag 的场景
- 2)运行 @test1 或者 @test2 对应的测试用例
- @CucumberOptions(tags = {"@test1,@test2"}, features = {…略…})
- 该配置可以运行 features 中那些被标记为“@test1”和被标记为“@test2”的场景。此处的逗号可以被理解为逻辑上的“OR”关系运算符,因此运行的结果是二者或者多个 tags 的并集。
-
- 3)运行被 @test1 标记并且 @test2标记的测试用例
- @CucumberOptions(tags = {"@test1","@test2"}, features = {…略…})
- 该配置可以运行 features 中那些既被 @test1标记又被@test2 标记的测试用例。
- 4)不运行被 @test1 标记但是被 @test2 标记的测试用例
- @CucumberOptions(tags = {"~@test1","@test2"}, features = {…略…})
- 该配置可以运行 features 中那些被标记为 @test2 但是不被 tag @test1 修饰标记的测试用例。此处的“~”表示否定的意思。
Examples:
@RunWith(CucumberWithSerenity.class)
@CucumberOptions(features = { "src/test/resources/features" }, glue = {
"com.***.steps.cucumber" }, tags = { "@Banner, @Text", "@First, @Last" })
public class MainRun {
}
@Before({"~@Login","@First"})
public void logIntoAdvDashboard() {
System.out.println("this is before");
}
@After({"~@Login","@Last"})
public void logOutAdvDashboard(){
System.out.println("this is after");
}
@RunWith(CucumberWithSerenity.class)
@CucumberOptions(features = { "src/test/resources/features/login" }, glue = {
"com.***.steps.cucumber" }, tags = { "@Login","@High" })
public class Login {
}
@RunWith(CucumberWithSerenity.class)
@CucumberOptions(features = { "src/test/resources/features/links/banner_positive.feature",
"src/test/resources/features/links/banner_negative.feature" }, glue = {
"com.***.steps.cucumber" }, tags = { "@Banner","@High, @Low"})
public class BannerLink {
}