SeleniumGRID2+NUnit3选项并行运行测试

本文关键字:运行测试 并行 选项 SeleniumGRID2+NUnit3 | 更新日期: 2023-09-27 18:27:22

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

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

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

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

有没有其他方法可以使用GRID+NUnit3使其工作?


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

SeleniumGRID2+NUnit3选项并行运行测试

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

  1. 重构——它是为一个测试项目完成的。除了删除静态变量(最初的重构目的),其他代码也发生了变化。需要付出巨大的努力
  2. 使用TeamCity代理进行并行运行。我忘了最后提到TeamCity正在执行测试,但只有一个代理。对于剩下的"旧"测试(驱动程序实例存储在静态变量中),几个TC代理被配置为只运行测试解决方案中的几个类。此选项非常"快速",不需要对代码进行大的更改