Selenium GRID 2 + NUnit 3选项可并行运行测试

时间:2015-12-18 14:11:15

标签: c# selenium-webdriver selenium-grid2 parallel-testing nunit-3.0

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

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

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

同样,NUnit 3.0提供了NDistribUnit来并行运行多个程序集。要运行多个测试项目,这很好,但目前我们每个应用程序有一个程序集。 最好并行运行一个应用程序(一个程序集)的测试。

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

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

1 个答案:

答案 0 :(得分:0)

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

  1. 重构 - 它是为一个测试项目完成的。 除了删除静态变量(初始重构目的)之外,其他代码也被更改。 需要付出巨大的努力。
  2. 使用TeamCity代理进行并行运行。 我忘了提到最后测试正在TeamCity上执行,但是由单个代理执行。 对于左派的老人来说测试(其中Driver实例存储在静态变量中)将几个TC代理配置为仅运行测试解决方案中的几个类。 这个选项非常快#'并且不需要进行大的代码更改。