【问题标题】:NUnit Selenium tests inside the same TestFixture cannot be running in parallel同一 TestFixture 内的 NUnit Selenium 测试不能并行运行
【发布时间】:2022-02-04 03:31:45
【问题描述】:

我对 Visual Studio 2019 中的 Selenium 测试的 NUnit 测试设置(.NET Core 3.1 和 NUnit 3)有疑问。

在 AssemblyInfo.cs 中,我添加了 2 行。

[程序集:可并行化(ParallelScope.Children)]

[程序集:LevelOfParallelism(4)]

代码很简单。在 SetUp() 中初始化驱动程序。但是,当使用测试资源管理器运行 2 个测试时,会打开 2 个 chrome 窗口。但它们没有并行运行(仍然无法使用 Setup、OneTimeSetup 属性)

如果我直接在TestMethod中初始化驱动就可以了,但是就是骗码。

这是否意味着同一个 TestFixture 中的 NUnit Selenium 测试不能并行运行?

谢谢, 雷

[TestFixture]
public class Account : BaseTest
{
    [SetUp]
    public void Setup()
    {
        _driver = new ChromeDriver();
        _driver.Manage().Window.Maximize();
    }

    [Test]
    [Category("UAT")]
    [Order(1)]
    public void Test1()
    {  
        _driver.Navigate().GoToUrl("https://www.msn.com");
        Assert.AreEqual("https://www.msn.com/", _driver.Url);
    }

    [Test]
    [Category("UAT")]
    [Order(0)]
    public void Test2()
    {
        _driver.Navigate().GoToUrl("https://www.google.com");
        Assert.AreEqual("https://www.google.com/", _driver.Url);
    }

【问题讨论】:

    标签: selenium nunit-3.0


    【解决方案1】:

    我也有同样的问题,但我设法整理了一个 VS2019 + Selenium + Parallelism 确实有效的示例,尽管我相信您可能会遇到一个限制(我会与最后)基于您的示例。

    为了让它工作,我添加了一个带有您记下的两个属性的 AssemblyInfo.cs 文件:

    [assembly: Parallelizable(ParallelScope.Children)]
    [assembly: LevelOfParallelism(6)]
    

    我测试了归因于类或 AssemblyInfo.cs 文件的“可并行化”,并且两者都有效。需要包含“LevelOfParallelism”——但在我的测试中,并行执行非 Selenium 单元测试不需要它。

    我的模型涉及针对多个 WebDriver 执行我的测试,我目前通过使用 [TestCaseSource] 或 [ValueSource] 属性将 IEnumerable 集合传递给每个测试来执行此操作。这允许我在每个测试中重用一个 WebDriver 实例,以减少整体执行时间(启动/关闭实例非常昂贵)并确保正确清理,但我观察到虽然测试是并行运行的,每个 WebDriver 实例一次只能执行一个测试。如果您在第二个测试中使用不同的 WebDriver 实例,它们将并行执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-30
      • 2017-05-25
      • 1970-01-01
      • 1970-01-01
      • 2010-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多