c#中的Selenium Grid与Nunit并行执行

本文关键字:Nunit 并行执行 Grid 中的 Selenium | 更新日期: 2023-09-27 18:02:40

我刚刚完成了selenium grid 2的设置。集线器和节点已启动并运行。我正在使用Selenium webdriver + c# + Nunit来运行我的测试,我现在想做以下事情:

1) 将测试用例分发到不同的节点(Parallelism),例如节点1运行测试x,节点2运行测试y

2) 我需要能够配置浏览器和平台类型的每个节点,我现在能做的是,我做一个设置功能,它使用相同的平台和浏览器的所有节点,所以我怎么能通过分配每个节点的期望的能力来实现。

问题是当我运行接下来的代码时,我发现测试同时运行而不是并行运行

我的代码快照:

using System;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Safari;
using OpenQA.Selenium.Edge;
using OpenQA.Selenium.IE;
using OpenQA.Selenium.Support.UI;
using OpenQA.Selenium.Remote;
using NUnit;
using NUnit.Framework;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace GridTest
{
    [TestFixture]
    [Parallelizable]
    public class Test_Grid
    {
        IWebDriver driver;
        [SetUp]
        public void Setup()
        {
            /////IE Setup/////////
            var capabilities = new DesiredCapabilities("internet explorer", string.Empty, new Platform(PlatformType.Any));
            capabilities.SetCapability("ignoreProtectedModeSettings", true);
            driver = new RemoteWebDriver(new Uri("http://localhost:4445/wd/hub"),capabilities);
         }
        //Search google test 
        [Test]
        [Parallelizable]
        public void GoogleSearch()
        {
            string homepage = "http://www.google.com";
            //Navigate to the site
            driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
            driver.Navigate().GoToUrl(homepage);
        }
        [Test]
        [Parallelizable]
        public void BingSearch()
        {
            //var driver = new FirefoxDriver();
            driver.Navigate().GoToUrl("http://www.bing.com");
        }

      [TearDown]
       public void Teardown()
        {
           driver.Quit();
        }
    }
}

c#中的Selenium Grid与Nunit并行执行

很简单…但你不会喜欢这个答案的。: - (

NUnit还不支持在fixture中并行运行测试方法。它只能并行运行单个fixture。

所以你需要对那些你想在固定级别并行运行的东西建模,使用OneTimeSetUp来选择正确的浏览器。

UPDATE - 2019年9月27日

上面的答案是我三年前写的,当时它是真的!人们,请阅读这些问题和答案上的日期,因为它们永远留在这里,除非被删除。

在答案发布几个月后,NUnit增加了并行运行单个测试用例(方法)的能力。关于支持特性的当前信息最好的来源是NUnit文档,而不是SO!

我没有使用c#或nunit,但我有多个网格设置来分发java/测试测试。

我所做的是每个类做一个测试。然后将它们编译成具有以下参数的xml测试套件:parallel="tests" thread-count="14"

另外,确保您的网格节点具有指定的实例数量。

NUnit支持方法级并行化。你必须设置ParallelScope.All.

我已经开发了一个使用NUnit在不同浏览器上并行运行(方法级)的工作项目。

如果您的项目有2个测试fixture,每个fixture在一个文件中有15个测试,并且您希望并行运行所有30个测试。然后使用下面的命令:

nunit3-console.exe xxxtests.dll——workers=30

https://github.com/atmakur/WebTestingFramework