SpecFlow - 钩子



钩子是事件绑定,用于在某些步骤添加更多自动化逻辑。例如,对于任何需要在特定场景之前运行的步骤。为了在代码中引入钩子,我们必须添加[Binding]属性。

钩子具有全局访问权限。但可以通过声明范围绑定使其对特性和场景可用。范围绑定可以使用标签进行过滤。

SpecFlow+ 运行器限制

如果我们使用 SpecFlow+ 运行器从多个线程执行测试,则BeforeTestRunAfterTestRun等 After 和 Before 钩子每个线程只运行一次。

钩子属性

钩子属性如下所示:

BeforeTestRun/AfterTestRun - 用于在整个测试执行之前/之后运行自动化逻辑。它适用的方法应该是静态的。

BeforeFeature/AfterFeature - 用于在单个特性执行之前/之后运行自动化逻辑。它适用的方法应该是静态的。

BeforeScenario 或 Before/AfterScenario 或 After - 用于在单个场景或场景大纲执行之前/之后运行自动化逻辑。

BeforeScenarioBlock/AfterScenarioBlock - 用于在单个场景块执行之前/之后运行自动化逻辑。(在 When 和 Given 步骤之间)。

BeforeStep/AfterStep - 用于在单个场景步骤执行之前/之后运行自动化逻辑。

钩子执行顺序

相同类型的钩子,例如两个 AfterScenario 钩子,以随机顺序运行。为了使执行按特定顺序进行,我们必须在钩子属性中添加Order属性。

示例

[AfterScenario(Order = 1)]
public void CloseBrowser() {
   // we require this method to execute first...
}
[AfterScenario(Order = 2)]
public void VerifySessionIdAfterBrowserClose() {
   // ...so we require this method to execute after the CloseBrowser //method is run
}

数字表示顺序,这意味着数字最小的钩子先运行。如果省略数字,则默认值为 10000。不建议依赖它,而应为各个钩子指定顺序。

此外,如果抛出未处理的异常,则所有后续相同类型的钩子都将被跳过。为了防止这种情况,我们应该处理所有异常。

广告

© . All rights reserved.