我有一点问题。我正在开发一个自动化项目,并尝试在多个浏览器上并行执行测试。
我有这两门课:
[TestFixture(typeof(ChromeDriver))]
[TestFixture(typeof(EdgeDriver))]
[TestFixture(typeof(FirefoxDriver))]
public class BaseTest<TWebDriver> where TWebDriver : IWebDriver, new()
{
protected IWebDriver _driver;
[SetUp]
protected void SetUp()
{
_driver = new TWebDriver();
}
[TearDown]
protected void TearDown()
{
_driver?.Close();
}
}
public class GoogleTest<TWebDriver> : BaseTest<TWebDriver> where TWebDriver : IWebDriver, new()
{
[Test]
public void NavigateToGoogle()
{
// Navigate
_driver.Manage().Window.Maximize();
_driver.Navigate().GoToUrl("http://www.google.com/");
}
}
我知道我应该在某个地方添加 [Parallelizable]...但不知道在哪里。我尝试将其放置在 BaseTest 类上方和 NavigateToGoogle 方法上方,但无论哪种方式都不起作用。有人有什么想法吗?或者也许我创建这些类的方式做错了什么?
谢谢!
默认情况下,[Parallelizable] 使用 ParallelScope.Self 作为作用域。这意味着该测试将能够与“其他”测试并行运行。由于只有 1 个测试,因此它将同步执行。 尝试将范围更改为“Fixtures”:
[TestFixture(typeof(ChromeDriver))]
[TestFixture(typeof(EdgeDriver))]
[TestFixture(typeof(FirefoxDriver))]
[Parallelizable(ParallelScope.Fixtures)]
您可以在此处查看不同的范围及其含义:https://docs.nunit.org/articles/nunit/writing-tests/attributes/parallelizing.html