运行一次登录方案,然后运行多个方案

fan*_*ypi 4 c# scenarios specflow

我要登录一次,然后在关闭浏览器之前运行几个方案(假设有7个方案)。

我使用Background而不是在每个场景中都登录了Given,但是似乎每次运行场景时,它都首先登录。

这减慢了我的测试速度。

我想做的事:

登录并在同一浏览器窗口上运行多个方案,然后在完成后将其关闭。

vig*_*ity 5

您正在寻找的是Specflow挂钩。

https://github.com/techtalk/SpecFlow/wiki/Hooks

您将无法在后台指定“登录”作为步骤,而是标记需要登录的每个方案。

例:

@alreadyLoggedIn
Scenario: user can see XYZ
    Given...

@alreadyLoggedIn
Scenario: user can see ABC
    Given...
Run Code Online (Sandbox Code Playgroud)

然后,您只需要在使用BeforeFeature属性修饰的方法中指定用于“登录”的代码即可。对于功能中的任何方案,此方法将只运行一次。

[BeforeFeature("alreadyLoggedIn")]
public void BeforeFeatureLoggedIn()
{
    // write code to log the person in
}
Run Code Online (Sandbox Code Playgroud)

如果您需要测试的用户/角色不同,则只需创建单独的标签(即adminAlreadyLoggedIn,salesAlreadyLoggedIn等)

希望这能使您走上正确的道路!

  • @fancpi:不,有点违反直觉,背景是*在功能中的每个场景之前执行的*,而不是每个功能一次。背景是减少重复步骤定义的一种方法,但它们并不能消除步骤本身的执行。 (2认同)