Selenium:测试 2 个不同用户的应用程序功能的最佳方式(NUnit、C#)

Selenium: Best way to test app-features with 2 different users (NUnit, C#)

我正在寻找一种干净的方法来测试 2 个不同用户在网页上的所有功能。 一个用户是管理员,第二个是普通用户。

这是我的硒测试的概述:

如您所见,我们在网页上有 3 个不同的功能:

这些功能中的每一个都有其 自己的 测试 class 及其 自己的 网络驱动程序,因此我能够 运行 并行测试。

这些测试文件中的每一个,都在 SetUp 中调用 Login Class

登录 Class 正在做的是:

  1. 使用 goToUrl 打开网站
  2. 获取存储在密码管理器工具中的用户名和密码
  3. 使用selenium输入用户名、密码点击登录
  4. 等到加载登录后的页面,然后返回测试方法

当我为一个用户测试时,一切都完美无缺。所有测试运行并行

现在我想用管理员用户测试所有相同的功能。

我想到的唯一方法是创建另一个登录名 class,它获取其他用户的凭据并复制 3 个测试 classes,所以所有 6 个测试运行并行

但我认为它不干净,因为我会复制 4 个文件,这些文件几乎 1:1 相同的代码。

我会将用户 ID 和密码参数作为固定装置的参数。

  1. 使用参数化的 TestFixture(一个带有参数)
  2. 为构造函数提供相同的参数类型,以便 NUnit 可以将它们传递给您。
  3. 您的四个文件将导致构建六个实例。
[TestFixture("normalUser", "normalUserPassword")]
[TestFixture("adminUser", "adminUserPassword")]
public class SomeFixture
{
    private string User { get; }
    private string Password { get; }

    public SomeFixture(string user, string password)
    {
        User = user;
        Password = password;
    }

    [OneTimeSetUp]
    public void SetUpTheFixture()
    {
        // Create the driver
    }

    ...
}

如果您更喜欢查找密码,那么只需将用户 ID 作为唯一参数,并在需要时查找密码。

[TestFixture("normalUser")]
[TestFixture("adminUser")]
public class SomeFixture
{
    private string User { get; }

    public SomeFixture(string user)
    {
        User = user;
    }

    [OneTimeSetUp]
    public void SetUpTheFixture()
    {
        // Look up password
        // Create driver
    }

    ...
}