什么是 Cucumber 中的 Hook?

2025年3月17日 | 阅读 3 分钟

在 Cucumber 中,hook 是一段代码块,可以通过使用注解 @Before@After 在步骤定义文件中为每个场景定义。这些 @Before 和 @After 注解会创建一个代码块,我们可以在其中编写代码。

Hook in Cucumber

Cucumber hook 帮助我们更好地处理代码工作流程,并且有助于减少代码冗余。

语法

根据代码逻辑,hook 的工作是在特定函数/方法之后启动和关闭 Web 驱动程序会话。因此,实际上,它与任何函数/方法或场景无关。

注意:Hook 只能在步骤定义文件中定义。

Hook 的必要性

在测试期间,我们可能会遇到在测试测试场景之前需要执行一些常规的先决条件的步骤的情况。

考虑以下先决条件以了解在测试期间可能遇到的先决条件类型

  • 启动 Web 驱动程序
  • 设置数据库连接
  • 设置测试数据
  • 设置浏览器 Cookie
  • 导航到特定页面

同样,总有一些先决条件步骤可能在测试后遇到

  • 停止 Web 驱动程序
  • 关闭数据库连接
  • 清除测试数据
  • 清除浏览器 Cookie
  • 从应用程序注销
  • 打印报告或日志
  • 截取错误的屏幕截图

为了处理这些类型的常规先决条件步骤,使用 Cucumber hook 是最好的选择。

Hook 注解

与 TestNG 注解不同,Cucumber 仅支持两个 hook

  • @Before
  • @After

@Before

顾名思义,我们可以将 @Before hook 与我们需要启动 Web 驱动程序的函数/方法一起使用。

@After

顾名思义,我们可以将 @After hook 与我们需要关闭 Web 驱动程序的函数/方法一起使用。

让我们通过一个步骤定义文件的例子更好地理解这个概念。

示例

这是一个 Maven 测试项目 的步骤定义文件的实例。该项目是为测试 Web 应用程序 javaTpoint 创建的。

为了使用 hook,我们在包 javatpointTest 下创建了名为 hookTest.java 的步骤定义文件。

当我们执行这段代码时,将是以下执行顺序

  • 首先,@Before 注解将设置 Web 驱动程序和其他必要的先决条件来执行测试。
  • 在设置好 Web 驱动程序和其他先决条件之后,将执行 Given 语句。
  • 在执行 Given 语句之后,将执行 When 语句。
  • 在执行 When 语句之后,将执行 Then 语句。
  • 现在,最后,@After hook 将 关闭 Web 驱动程序并进行清理过程。

由于我们知道,为了执行步骤定义文件,我们应该有一个完整的 Maven 测试项目,所以首先在 eclipse 中创建它。

标记的 Hooks

Hook 也可以与标签一起使用。我们可以使用 @before@after hook 与特定的测试。

示例

我们也可以将 hook 的相同概念与逻辑或/和运算符一起使用。

示例


下一主题#