【问题标题】:How to configure Selenium Grid with NUnit3 parallel test execution?如何使用 NUnit3 并行测试执行配置 Selenium Grid?
【发布时间】:2016-05-04 09:03:47
【问题描述】:

我们当前的 C#/Nunit 2.6.3 测试框架有一个回归套件,它需要超过 35 小时才能在单台电脑上运行,其中一些测试持续时间长达 20 分钟。设置批量测试以在多台机器上运行既耗时又低效,因此我尝试将测试迁移到 NUnit 3 以获得在 Selenium Grid 上并行执行的好处。

我的目标是让 12 个节点每个运行一个 IE 实例。但是,用于 VS 的 NUnit3 测试适配器似乎正在尝试同时运行所有测试。

由于我将始终从比我拥有的节点更多的夹具执行测试,因此夹具将位于队列中直到节点可用,这一点很重要。在实践中,测试夹具可能需要等待几个小时才能获得空闲节点。 对于我当前的配置实验,我进行了以下设置:

  • 具有以下配置的集线器:java -jar selenium-server-standalone-2.48.2.jar -role hub -newSessionWaitTimeout:-1 -browserTimeout 120 -timeout 3600
  • 默认配置中的单个节点。

  • 两个测试夹具,每个夹具有 10 个测试。测试夹具具有以下属性:[Parallelizable(ParallelScope.Self)]

在这种情况下,我希望只有一个节点支持单个 IE 实例,因此只会执行单个测试。然后,集线器将在队列中的下一个测试空闲时将其发送到节点。但是,似乎两个测试装置正在同时运行。一个测试被推送到节点,但另一个夹具上的测试失败并显示以下消息:

结果信息:
OpenQA.Selenium.WebDriverException :对 URL http://localhost:4444/wd/hub/session 的远程 WebDriver 服务器的 HTTP 请求在 60 秒后超时。 ----> System.Net.WebException : 操作超时

当我在 Java/JUnit 框架中的 Eclipse 上使用网格时,我没有遇到任何问题。集线器将使用默认配置对测试进行排队,直到节点空闲且没有任何超时。

有谁知道正确的配置,或者这是 NUnit 3 测试适配器的问题吗?不幸的是,浏览器选择被固定为 IE。

【问题讨论】:

    标签: c# internet-explorer selenium webdriver nunit-3.0


    【解决方案1】:

    我发现可以通过在 AssemblyInfo 中设置 LevelOfParallelism 属性来控制并行线程的数量。

    //Determines the number parallel threads that run simultaneously
    [assembly: LevelOfParallelism(7)]
    

    如果此属性设置为可用节点的数量,那么测试会按我的预期排队。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多