Cucumber 测试中的标签是什么?

2024 年 8 月 29 日 | 4 分钟阅读

在 Cucumber 中,标签用于将测试(如 冒烟回归等)与特定场景相关联。

标签满足以下目的

  • 如果我们在 feature 文件中有许多场景,为了将它们放在一个组中,我们在 Cucumber 中使用标签,通过标签,我们将能够为同一标签下的特定场景准备报告。
  • 默认情况下,Cucumber 执行 feature 文件中的所有场景,但如果我们需要执行或跳过特定测试下的任何特定场景,我们可以用标签声明场景。

我们可以通过以下语法在 feature 文件中声明一个标签

@TestName
Scenario: Mention the Scenario 

其中,

@: 这是用于声明标签的符号。

TestName: 这是特定测试的名称。

Scenario: 这是一个场景。

现在,如果我们需要在多个测试下执行一个场景,在这种情况下,我们可以通过使用标签来创建一组多个测试。

语法

@TestName@TestName 
Scenario: Mention the scenario 

让我们通过一个例子来理解标签

示例

假设一个应用程序的 feature 文件包含 100 个测试场景,当我们每次通过 Cucumber 测试测试此应用程序时,将不必要地执行 100 个测试场景。因此,系统性能正在降低。

为了克服这个问题,我们可以使用标签。

让我们举一个包含几个场景的 feature 文件的例子。

@SmokeTest 
Scenario: Search contact
Given: Desired contact will be displayed
@RegressionTest 
Scenario: Search a deal
Given: Desired deal will be displayed
@SmokeTest 
Scenario: Search an email	
Given: Desired email will be displayed

在上面的 feature 文件中使用标签有两个好处

  • 首先,@SmokeTest 或 @RegressionTest 标签仅包含适用于冒烟或回归测试的场景。
  • 其次,可以在执行时根据需要包含或排除场景。

现在假设,我们只需要测试在冒烟测试下声明的那些场景,那么我们可以通过以下方式在测试代码中提及 @SmokeTest 标签

tags={"@SmokeTest"}

在测试代码中提及标签后,只会测试在冒烟测试下声明的场景,其余场景将被跳过。

为什么需要在 Cucumber 测试中使用标签?

当我们在 feature 文件中只有少量场景时,它看起来很容易。但是,在实际项目中,情况并非如此。

在实际项目中,可能存在大量 feature 文件,这些文件可能具有不同的目的,例如冒烟测试/回归测试,不同的状态,例如准备执行/工作中,不同的视角,例如开发人员/QA/BA 等。

为了管理这些大型 feature 文件的执行,我们在 feature 文件中使用带有场景的标签。

标签的好处是,我们只能测试 feature 文件的特定场景,这是我们需要执行的,而不是那些不必要的场景。

如何在 Cucumber 测试中创建一组多个标签?

当我们需要对单个场景执行多个测试时,我们也可以使用多个标签。

示例

@SmokeTest tag @RegressionTest tag
Scenario: Search contact
Given: Desired contact will be displayed
@RegressionTest tag
Scenario: Search a deal
Given: Desired deal will be displayed
@SmokeTest tag
Scenario: Search an email
Given: Desired email will be displayed

根据上面的例子,我们可以同时测试冒烟测试和回归测试的第一个场景。

通过多个标签的测试可以通过使用两个运算符来完成

  • OR 运算符
  • AND 运算符

OR 运算符

当我们需要测试一个应用程序时,如果该应用程序在第一次测试中失败,则应该检查下一个测试,在这种情况下可以使用 OR 运算符。如果下一个测试也失败,则应检查另一个下一个测试,依此类推。

换句话说,必须测试来自多个标签集中的每个测试用例,无论它是失败还是通过。

要在测试执行程序中使用 OR 运算符,请使用以下语法

Tags= {"@FirstTest, @SecondTest"}

示例

tags= {"@SmokeTest, @RegressionTest"}

在上面的例子中,OR 运算符执行所有标记的测试,即 @SmokeTest@RegressionTest

AND 运算符

当我们需要测试一个应用程序时,如果该应用程序在第一次测试中通过,则跳到检查下一个测试,但如果失败,则应该终止测试,在这种情况下可以使用 AND 运算符。

要在测试执行程序中使用 AND 运算符,请使用以下语法

tags= {"@FirstTest", "@SecondTest"}

示例

tags= {"@SmokeTest", "@RegressionTest"}

在上面的例子中,AND 运算符执行第一个测试,如果此测试的结果通过,那么它将跳到检查下一个测试。但如果结果失败,那么测试将被终止。

如何在 Cucumber 测试中忽略标签?

在我们需要跳过测试的情况下,我们可以在标签中使用特殊符号 "~"。这个特殊字符也适用于跳过场景和 Feature。它也可以与 OR 或 AND 结合使用。

示例

假设有一组 @SmokeTest@RegressionTest 测试。 现在,我们需要跳过回归测试,为此,请考虑以下代码

tags={"@SmokeTest", "~@RegressionTest"}

下一个主题Gherkin 语言