【问题标题】:Selenium GRID 2 + NUnit 3 options to run tests in parallelSelenium GRID 2 + NUnit 3 选项可并行运行测试
【发布时间】: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


【解决方案1】:

实际上,有两种选择:

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

【讨论】:

    猜你喜欢
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 2017-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多