NUnit,运行 与 Selenium 并行的参数化测试
NUnit, Run Parametrized Tests in Parallel with Selenium
我在尝试按照标题所述操作时遇到问题。当我 运行 在本地执行此操作时,它会启动 2 chrome 个实例,但是它只使用其中一个浏览器进行两个测试,而不是对每个测试都使用每个浏览器。知道如何正确设置吗?
public class BaseClass
{
public IWebDriver driver;
[SetUp]
public void BaseSetUp()
{
driver = new ChromeDriver();
driver.Manage().Window.Maximize();
}
[TearDown]
public void BaseTearDown()
{
driver.Quit();
}
}
[Parallelizable(ParallelScope.All)]
[TestFixture]
public class DerivedClass : BaseClass
{
[TestCase("https://www.python.org/", "Welcome to Python.org")]
[TestCase("https://www.w3.org/", "World Wide Web Consortium (W3C)")]
public void Test3(string url, string title)
{
driver.Navigate().GoToUrl(url);
Thread.Sleep(4500);
Assert.AreEqual(driver.Title, title);
}
}
您确实创建了两次驱动程序,但是您将两个实例都存储在同一个成员字段中,driver
。发生这种情况的原因是 NUnit 对 class 中的所有测试使用相同的测试实例 class。 (将来的版本中将提供一项新功能来使用单独的实例,但目前对您没有帮助。)
作为并行测试 运行,对 运行 的第一个测试执行其设置并将驱动程序存储在该字段中。然后第二个测试开始并将它的实例存储在同一个字段中。无法准确预测何时(在测试执行期间)将进行替换。但是,当您在同一台机器上重新 运行 时,它很可能会持续发生。
以例子为例,解决方法很简单。如果您希望每个测试用例使用单独的驱动程序实例,请在测试本身中创建驱动程序,也许通过调用集中所有初始化的方法。
要记住的一件重要事情是 ParallelizableAttribute
用于 告诉 NUnit 测试可能是 运行 并行的。 NUnit 接受它作为承诺,但如果您在测试之间共享状态,它们将不会 运行 正确。
我在尝试按照标题所述操作时遇到问题。当我 运行 在本地执行此操作时,它会启动 2 chrome 个实例,但是它只使用其中一个浏览器进行两个测试,而不是对每个测试都使用每个浏览器。知道如何正确设置吗?
public class BaseClass
{
public IWebDriver driver;
[SetUp]
public void BaseSetUp()
{
driver = new ChromeDriver();
driver.Manage().Window.Maximize();
}
[TearDown]
public void BaseTearDown()
{
driver.Quit();
}
}
[Parallelizable(ParallelScope.All)]
[TestFixture]
public class DerivedClass : BaseClass
{
[TestCase("https://www.python.org/", "Welcome to Python.org")]
[TestCase("https://www.w3.org/", "World Wide Web Consortium (W3C)")]
public void Test3(string url, string title)
{
driver.Navigate().GoToUrl(url);
Thread.Sleep(4500);
Assert.AreEqual(driver.Title, title);
}
}
您确实创建了两次驱动程序,但是您将两个实例都存储在同一个成员字段中,driver
。发生这种情况的原因是 NUnit 对 class 中的所有测试使用相同的测试实例 class。 (将来的版本中将提供一项新功能来使用单独的实例,但目前对您没有帮助。)
作为并行测试 运行,对 运行 的第一个测试执行其设置并将驱动程序存储在该字段中。然后第二个测试开始并将它的实例存储在同一个字段中。无法准确预测何时(在测试执行期间)将进行替换。但是,当您在同一台机器上重新 运行 时,它很可能会持续发生。
以例子为例,解决方法很简单。如果您希望每个测试用例使用单独的驱动程序实例,请在测试本身中创建驱动程序,也许通过调用集中所有初始化的方法。
要记住的一件重要事情是 ParallelizableAttribute
用于 告诉 NUnit 测试可能是 运行 并行的。 NUnit 接受它作为承诺,但如果您在测试之间共享状态,它们将不会 运行 正确。