NUnit,与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为测试类中的所有测试使用同一个测试类的实例。(一个新功能将在未来的版本中提供,使用一个单独的实例,但这对你现在没有帮助。)

当测试并行运行时,第一个要运行的测试执行其设置并将驱动程序存储在该字段中。然后启动第二个测试,并将其实例存储在同一个字段中。无法准确预测何时(在测试执行期间)进行替换。但是,当您在同一台机器上重新运行时,它很可能始终发生。

在这个例子中,解决方案很简单。如果您想要每个测试用例使用一个单独的驱动程序实例,那么在测试本身中创建驱动程序,也许是通过调用一个集中您所有初始化的方法。

重要的是要记住,ParallelizableAttribute用于告诉测试可以并行运行的单元。NUnit接受它作为一个承诺,但是如果你在测试之间共享状态,它们将不能正确运行。

相关内容

  • 没有找到相关文章

最新更新