我是SpecFlow新手,我正在为不同角色类型的经过身份验证的用户设置许多测试特性/场景。我是通过使用Coypu的浏览器自动化来实现的。
因此,我在特性中有一个后台步骤来设置该角色类型的用户的登录。
Background:
Given I am logged in as a ...some role I'm interested in...在特性中的每个场景之后,我想再次登录用户(否则,在后台的日志步骤将不能用于下一个场景--我将在测试之间保持相同的Coypu浏览器实例打开)。
我找到了我可以使用的[AfterScenario]注释,但由于这是在所有特性中的所有场景的范围(据我理解.)它将影响场景,比如未经身份验证的用户。
我可以用我相信的[AfterScenario]对[Scope(Feature="Some Feature")]进行定位,但我预计在测试大量特性之前和之后都需要登录/退出,而且我并不热衷于用一串神奇的字符串来指定所有这些特性。
因此,我想知道我是否可以在特性文件中放一些东西,类似于背景,但要在该特性中的每个场景之后运行。(或者,也许我登录/退出每一种场景的方式并不是最好的方式?)
发布于 2012-06-11 11:28:47
在specflow中没有"Postground“功能,但是您可以使用标签过滤实现类似的功能。
在我们的大多数项目中,我们使用标记来标记具有特定设置/拆卸逻辑的场景。然后,我们使用BeforeScenario/AfterScenario挂钩来执行逻辑:
[BeforeScenario("authentication")]
public void BeforeAuthenticationScenario()
{
//...
}
[AfterScenario("authentication")]
public void AfterAuthenticationScenario()
{
//...
}您可以标记单个场景或整个功能:
@authentication
Feature: Some feature requires authentication
@authentication
Scenario: Some scenario requires authentication因此,在您的代码中,您将只有一条神奇的字符串“身份验证”,在您的特性中,您可以使用标记声明地应用自定义逻辑。
https://stackoverflow.com/questions/10978903
复制相似问题