在场景之后运行的等效背景

时间:2012-06-11 11:05:55

标签: specflow gherkin

我是SpecFlow的新手,我正在为不同角色类型的经过身份验证的用户设置一些测试功能/方案。我是通过Coypu的浏览器自动化做到的。

所以我在该功能中有一个后台步骤来设置该角色类型的用户的登录。

Background:
    Given I am logged in as a ...some role I'm interested in...

在功能中的每个场景之后,我想再次将用户注销(否则后台的登录步骤将不适用于下一个场景 - 我在测试之间保持相同的Coypu浏览器实例打开)。

我找到了我可以使用的[AfterScenario]注释,但是因为它涵盖了所有功能的所有场景(据我所知......),这会影响对未经身份验证的用户的情况。

我可以将[AfterScenario]的范围与[Scope(Feature="Some Feature")]相提并论,但我预计必须在我正在测试的一系列功能之前和之后登录/注销,而我是并不热衷于用一堆魔术字符串来指定所有这些。

所以我想知道我是否可以在Feature文件中添加一些内容,类似于Background,但在该功能中的每个场景之后运行。 (或者,也许我为每个场景登录/退出的方式不是最好的方法吗?)

1 个答案:

答案 0 :(得分:12)

specflow中没有“Postground”功能,但您可以使用tags filtering实现类似功能。

在我们的大多数项目中,我们使用标签来标记具有特定设置/拆卸逻辑的场景。 然后我们使用BeforeScenario / AfterScenario挂钩来执行逻辑:

[BeforeScenario("authentication")]
public void BeforeAuthenticationScenario()
{
    //...
}    

[AfterScenario("authentication")]
public void AfterAuthenticationScenario()
{
    //...
}

您可以标记单个场景或整个功能:

@authentication
Feature: Some feature requires authentication

@authentication
Scenario: Some scenario requires authentication

因此,在您的代码中,您将只有一个魔术字符串“authentication”,并且在您的功能中,您可以使用标记以声明方式应用自定义逻辑。