问题描述
代码如下:
Background: Navigate to mail from inBox
Given I login into gmail as valid user
When I click on mail from InBox
Then mail should be open
Scenario: Delete mail from InBox
When I open mail from InBox page
And I click on Delete icon
Then mail should be deleted
Scenario: Sent mail from Draft Box
When I open mail from Draft Box
And I click on Sent button
Then mail should be sent
所以在这里我希望背景应该只为这个功能文件执行一次。一旦后台步骤被执行并导航到收件箱页面,那么场景应该一个接一个地执行。执行完该功能文件中的所有场景后,应关闭浏览器。
现在它正在执行后台步骤,然后移动到第一个场景执行它并且在同一个浏览器上,它仍然从后台执行步骤。
解决方法
您正在寻找带有 BeforeFeature 的 scoping 钩子到这个特征文件。
所以你需要一个像这样的钩子:
[BeforeFeature()]
[Scope(Feature = "feature title")]
public static void SetupInbox()
{
/// your automation code
}
每个功能文件只执行一次。
另请注意,根据您的测试运行程序,场景执行的顺序与您的功能文件中的顺序不同。
此外,我们非常不鼓励您编写相互依赖的场景。像单元测试一样,场景应该能够自己执行。
完全披露:我是 SpecFlow 的社区经理和长期贡献者