- SpecFlow 教程
- SpecFlow - 首页
- SpecFlow - 简介
- 测试驱动开发
- 行为驱动开发
- SpecFlow - Visual Studio 安装
- Visual Studio 扩展安装
- SpecFlow - 项目设置
- 其他项目依赖项
- SpecFlow - 运行器激活
- SpecFlow - HTML 报告
- SpecFlow - 绑定测试步骤
- SpecFlow - 创建第一个测试
- 配置 Selenium Webdriver
- SpecFlow - Gherkin
- SpecFlow - Gherkin 关键字
- SpecFlow - 特性文件
- SpecFlow - 步骤定义文件
- SpecFlow - 钩子
- SpecFlow - 背景说明
- 使用示例进行数据驱动测试
- 不使用示例进行数据驱动测试
- 表格转换为数据表
- 表格转换为字典
- 带有 CreateInstance 的表格
- SpecFlow - 带有 CreateSet 的表格
- SpecFlow 有用资源
- SpecFlow - 快速指南
- SpecFlow - 有用资源
- SpecFlow - 讨论
SpecFlow - 钩子
钩子是事件绑定,用于在某些步骤添加更多自动化逻辑。例如,对于任何需要在特定场景之前运行的步骤。为了在代码中引入钩子,我们必须添加[Binding]属性。
钩子具有全局访问权限。但可以通过声明范围绑定使其对特性和场景可用。范围绑定可以使用标签进行过滤。
SpecFlow+ 运行器限制
如果我们使用 SpecFlow+ 运行器从多个线程执行测试,则BeforeTestRun和AfterTestRun等 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。不建议依赖它,而应为各个钩子指定顺序。
此外,如果抛出未处理的异常,则所有后续相同类型的钩子都将被跳过。为了防止这种情况,我们应该处理所有异常。
广告