特定场景的钩子

问题描述 投票:0回答:1

我的 SpecFlow 自动化脚本对 Web 应用程序执行测试。将启动Web浏览器并输入用户名和密码进行登录,然后继续测试。

在我的钩子课上, [Before feature] 挂钩并获取所需的用户名和密码。我们将用户名命名为 userA。

[Before Scenario] 挂钩启动了浏览器。

后台关键字步骤使用网络浏览器中的用户名和密码进行登录。

但是,对于 1 个场景,用户名必须是不同的用户(userB),但由于 [Before feature] 挂钩正在调用 userA,我无法使用 userB 登录。

是否有办法让钩子仅针对该 1 个测试场景调用 userB?或者还有其他方法可以做到这一点吗?

c# automated-tests specflow
1个回答
0
投票

这就是为什么我通常喜欢在场景中包含用户登录步骤:

Scenario: ...
    Given ...
    And ...
    And ...
    And ...
    And user "XYZ" has logged in
    When ...
    Then ...

这是每个场景一根小黄瓜的成本。如果您不想在每个场景中对用户名进行硬编码,请考虑使用“登录”步骤来重点关注用户在该场景中扮演的角色。步骤定义可以处理登录所需的用户名和密码。

例如,您正在测试一个博客 Web 应用程序。您有两个用户,一个撰写博客文章,另一个对博客文章发表评论。而不是:

Given user "xxx" has logged in

表述重点关注用户在系统中扮演的角色的步骤。比如:

Given a blog post author has logged in
Given a blog post commentator has logged in

这使得场景更加明确,而且还为您提供了一个在步骤定义中放置用户名和密码的位置。如果这些角色之一需要更改用户名或密码,您可以更新步骤定义,而不是天知道有多少场景,谁知道有多少功能文件。

© www.soinside.com 2019 - 2024. All rights reserved.