【发布时间】:2015-12-18 14:11:14
【问题描述】:
我决定从当前的解决方案(几年前使用我们团队修改的 NUnit NDistribUnit 在 VirtualMachines 上运行测试,然后在集线器服务器上收集结果)切换到 Selenium Grid 2。
已尝试使用 ParallelizableAttribute 选项。 不幸的是,我注意到 IWebDriver 存储在全局变量(puhh)中。这导致测试启动多个浏览器实例,但测试使用单个 IWebDriver -> 测试执行发生在单个浏览器中 -> 测试在单个进程下运行,但具有多个“工作”线程。尝试使用 2 个虚拟机作为“节点”,将本地 PC 作为集线器。
我知道最好的解决方案是更改无效的想法,将驱动程序存储在全局变量中,但这会花费太多时间:要更新 3k+ 繁重的 UI 测试;许多静态方法预计将驱动程序作为全局变量也将被更新。
NUnit 3.0 还提供Option 来并行运行多个程序集。运行多个测试项目很好,但目前我们每个应用程序有 1 个程序集。 最好并行运行一个应用程序(一个程序集)的测试。
还有其他方法可以在这里使用 GRID + NUnit 3 来使其工作吗?
最后,对现有解决方案进行了重构:现在执行期间的每个测试都有自己的驱动程序。由于这一变化,大量代码被重写(似乎有太多方法需要将 IwebDriver 作为全局变量)
【问题讨论】:
-
你能更好地解释一下你有哪个问题以及它与什么有关吗?你如何存储你的 IWebDriver?给我们举个例子。
-
嗨 Denis,主要目标是找出哪些选项现在可用(使用 NUnit 3.0)来并行运行测试。此刻我可以命名 2: 1. 为每个带有测试的类使用 ParallelizableAttribute - 有效,但不适用于我,因为当前的解决方案将 IWebDriver 定义为:
public static IWebDriver _browser;2. 使用 NUnit 3.0 - ProcessModel.Parallel 东西来运行每个程序集在另一个进程中。
标签: c# selenium-webdriver selenium-grid2 parallel-testing nunit-3.0