我刚刚为selenium网格2进行了设置。集线器和节点已启动并正在运行。我正在使用Selenium Webdriver + C#+ Nunit来运行测试,我现在想执行以下操作:
1) 将测试用例分布在不同的节点之间(并行),例如,节点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(); } } }
简单一个…但是您不喜欢答案。:-(
NUnit尚不支持在夹具中并行运行测试方法。它仅并行运行单个灯具。
因此,您需要使用OneTimeSetUp选择正确的浏览器来对要在灯具级别并行运行的事物进行建模。
更新-2019年9月27日
我在三年前写了以上答案,当时的确如此!人们,请仔细阅读这些问题和答案的日期,因为除非删除,否则他们将永远留在这里。
发布答案几个月后,NUnit增加了并行运行单个测试用例(方法)的功能。有关受支持功能的最新信息的最佳来源是NUnit文档,而不是SO!大多数工具都是如此。