Selenium:测试 2 个不同用户的应用程序功能的最佳方式(NUnit、C#)
Selenium: Best way to test app-features with 2 different users (NUnit, C#)
我正在寻找一种干净的方法来测试 2 个不同用户在网页上的所有功能。
一个用户是管理员,第二个是普通用户。
这是我的硒测试的概述:
如您所见,我们在网页上有 3 个不同的功能:
- 解锁说明
- 战术
- 上传代码
这些功能中的每一个都有其 自己的 测试 class 及其 自己的 网络驱动程序,因此我能够 运行 并行测试。
这些测试文件中的每一个,都在 SetUp 中调用 Login Class。
登录 Class 正在做的是:
- 使用 goToUrl 打开网站
- 获取存储在密码管理器工具中的用户名和密码
- 使用selenium输入用户名、密码点击登录
- 等到加载登录后的页面,然后返回测试方法
当我为一个用户测试时,一切都完美无缺。所有测试运行并行
现在我想用管理员用户测试所有相同的功能。
我想到的唯一方法是创建另一个登录名 class,它获取其他用户的凭据并复制 3 个测试 classes,所以所有 6 个测试运行并行
但我认为它不干净,因为我会复制 4 个文件,这些文件几乎 1:1 相同的代码。
我会将用户 ID 和密码参数作为固定装置的参数。
- 使用参数化的 TestFixture(一个带有参数)
- 为构造函数提供相同的参数类型,以便 NUnit 可以将它们传递给您。
- 您的四个文件将导致构建六个实例。
[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
}
...
}
我正在寻找一种干净的方法来测试 2 个不同用户在网页上的所有功能。 一个用户是管理员,第二个是普通用户。
这是我的硒测试的概述:
如您所见,我们在网页上有 3 个不同的功能:
- 解锁说明
- 战术
- 上传代码
这些功能中的每一个都有其 自己的 测试 class 及其 自己的 网络驱动程序,因此我能够 运行 并行测试。
这些测试文件中的每一个,都在 SetUp 中调用 Login Class。
登录 Class 正在做的是:
- 使用 goToUrl 打开网站
- 获取存储在密码管理器工具中的用户名和密码
- 使用selenium输入用户名、密码点击登录
- 等到加载登录后的页面,然后返回测试方法
当我为一个用户测试时,一切都完美无缺。所有测试运行并行
现在我想用管理员用户测试所有相同的功能。
我想到的唯一方法是创建另一个登录名 class,它获取其他用户的凭据并复制 3 个测试 classes,所以所有 6 个测试运行并行
但我认为它不干净,因为我会复制 4 个文件,这些文件几乎 1:1 相同的代码。
我会将用户 ID 和密码参数作为固定装置的参数。
- 使用参数化的 TestFixture(一个带有参数)
- 为构造函数提供相同的参数类型,以便 NUnit 可以将它们传递给您。
- 您的四个文件将导致构建六个实例。
[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
}
...
}