如何使用 NUnit3 并行测试执行配置 Selenium Grid?

How to configure Selenium Grid with NUnit3 parallel test execution?

我们目前的 C#/Nunit 2.6.3 测试框架有一个回归套件,在单台电脑上 运行 需要超过 35 小时,一些测试持续长达 20 分钟的装置。在多台机器上设置成批测试 运行 既耗时又低效,因此我尝试将测试迁移到 NUnit 3 以获得在 Selenium Grid 上并行执行的好处。

我的目标是每个节点有 12 个 运行 单个 IE 实例。但是,VS 的 NUnit3 测试适配器似乎正在尝试同时 运行 所有测试。

因为我总是从比我拥有的节点更多的固定装置执行测试,所以固定装置将排在队列中直到节点可用是很重要的。在实践中,测试装置可能需要等待几个小时才能获得空闲节点。 对于我当前的配置实验,我进行了以下设置:

在这种情况下,我希望只有一个节点支持单个 IE 实例,因此只会执行一个测试。当节点空闲时,集线器会将队列中的下一个测试发送到节点。但是,两个测试装置似乎同时处于 运行 状态。一个测试被推送到节点,但另一个夹具上的测试失败并显示以下消息:

结果信息:
OpenQA.Selenium.WebDriverException :对 URL http://localhost:4444/wd/hub/session 的远程 WebDriver 服务器的 HTTP 请求在 60 秒后超时。 ----> System.Net.WebException : 操作超时

当我在 Java/JUnit 框架中的 Eclipse 上使用网格时,我没有遇到任何问题。集线器将使用默认配置对测试进行排队,直到节点空闲且没有任何超时。

有谁知道正确的配置,或者这是 NUnit 3 测试适配器的问题?不幸的是,浏览器选择固定为 IE。

我发现可以通过在 AssemblyInfo 中设置 LevelOfParallelism 属性来控制并行线程的数量。

//Determines the number parallel threads that run simultaneously
[assembly: LevelOfParallelism(7)]

如果此属性设置为可用节点数,则测试队列会如我所料。