1

我决定从当前的解决方案(几年前我们团队使用NDistribUnit修改过的 NUnit,它在 VirtualMachines 上运行测试,然后在集线器服务器上收集结果)切换到 Selenium Grid 2。

已尝试使用 ParallelizableAttribute 选项。不幸的是,我注意到 IWebDriver 存储在全局变量(puhh)中。这导致测试启动多个浏览器实例,但测试使用单个 IWebDriver -> 测试执行发生在单个浏览器中 -> 测试在单个进程下运行,但具有多个“工作”线程。尝试使用 2 个虚拟机作为“节点”,将本地 PC 作为集线器。

我知道最好的解决方案是更改无效的想法以将驱动程序存储在全局变量中,但这会花费太多时间:要更新 3k+ 繁重的 UI 测试;许多静态方法也期望将驱动程序作为全局变量进行更新。

NUnit 3.0 还提供了并行运行多个程序集的选项。运行多个测试项目很好,但目前我们每个应用程序有 1 个程序集。并行运行一个应用程序(一个程序集)的测试会很好。

还有其他方法可以在这里使用 GRID + NUnit 3 来使其工作吗?


最后,重构了现有的解决方案:现在执行期间的每个测试都有自己的驱动程序。由于这种变化,很多代码被重写(似乎有太多的方法期望将 IwebDriver 作为全局变量)

4

1 回答 1

0

实际上,有两个选项可以做到这一点:

  1. 重构——它是为一个测试项目完成的。除了删除静态变量(初始重构目的)外,其他代码也被更改。需要付出很大的努力。
  2. 使用 TeamCity 代理进行并行运行。我忘了提到最终测试正在 TeamCity 上执行,但由单个代理执行。对于左“旧”测试(其中 Driver 实例存储在静态变量中),几个 TC 代理被配置为仅运行来自测试解决方案的几个类。此选项非常“快速”,不需要大的代码更改。
于 2018-02-05T13:11:52.523 回答