Селеновая сетка с параллельным тестированием c использованием C# / NUnit
У меня есть несколько модульных тестов, написанных с помощью NUnit, которые вызывают команды selenium. У меня есть 2 win2k3 серверные коробки установки, один работает selenium grid hub вместе с 2 selenium rc. другой ящик работает 5 selenium rc. все они зарегистрированы в хабе как работает Firefox на Windows (чтобы сохранить его простым). В моем методе установки модульного теста я подключил его к имени хоста концентратора в порту 4444.
При выполнении тестов они выполняются только последовательно (как и ожидалось). Я уже сделал это. много читал о дорожной карте Нунита и о том, как они стреляют для параллельного тестирования способностей. Я видел много указателей на использование PNUnit в то же время. Однако это, по-видимому, полностью противоречит цели селеновой сетки.
Кто-нибудь из вас успешно реализовал параллельное тестирование с использованием C#/NUnit, подключенного к сетке Selenium? Если да, пожалуйста, уточните.
Я в полной растерянности от того, как это будет / может работать, используя NUnit, как он существует сейчас (я использую версию 2.9.3)
5 ответов:
К сожалению, NUnit не может запускать тесты параллельно, поэтому вам придется использовать другой раннер, чтобы заархивировать все преимущества параллельного тестирования с помощью Selenium Grid.
Я использую Gallio runner для моих тестов на c# и имею примеры здесь:
Проект на c# с параллельно выполняемыми тестами: http://code.google.com/p/design-of-selenium-tests-for-asp-net/
Описание: http://slmoloch.blogspot.com/2009/12/design-of-selenium-tests-for-aspnet_19.html
Галлио бегун испытания: http://www.gallio.org/
Есть также PNUnit , на который стоит взглянуть, я еще не пробовал его для параллельного тестирования.
NCrunch (http://www.ncrunch.net/) стоит посмотреть - он имеет возможность распределенной обработки как часть сборки, и одна из его основных особенностей-параллельное тестирование.
Используя Selenium Grid в сочетании с параллельной библиотекой задач .NET и классом DynamicObject, вы можете одновременно выполнять один и тот же тест на нескольких узлах Selenium Grid (нескольких браузерах).
Http://blog.dmbcllc.com/running-selenium-in-parallel-with-any-net-unit-testing-tool/
Gallio сегодня устарел, поэтому вы можете придерживаться решения NUnit.
Начиная с версии 3.7 NUnit позволяет запускать тест параллельно. До этого это было возможно сделать на уровне фикстура, но в 3.7+ вы можете даже для тестов в одном TestFixute. Смотрите мой пример ниже, чтобы продемонстрировать, как это может быть достигнуто.
using NUnit.Framework; using System; using System.Collections.Generic; using System.Linq; using System.Threading; namespace ConsoleApp1 { [TestFixture] public class Dummy { static TestCaseData Case(int i) => new TestCaseData(TimeSpan.FromSeconds(2)).SetName($"Case {i}"); public static IEnumerable<TestCaseData> Cases() => Enumerable.Range(1, 5).Select(Case); [TestCaseSource(nameof(Cases)), Parallelizable(ParallelScope.Children)] public void ItShouldSleep(TimeSpan t) => Thread.Sleep(t); static TestCaseData Case2(int i) => new TestCaseData(TimeSpan.FromSeconds(2)).SetName($"Case2 {i}"); public static IEnumerable<TestCaseData> Cases2() => Enumerable.Range(1, 5).Select(Case2); [TestCaseSource(nameof(Cases2)), Parallelizable(ParallelScope.Children)] public void ItShouldSleep2(TimeSpan t) => Thread.Sleep(t); } [TestFixture()] public class Dummy2 { static TestCaseData Case(int i) => new TestCaseData(TimeSpan.FromSeconds(2)).SetName($"Case {i}"); public static IEnumerable<TestCaseData> Cases() => Enumerable.Range(1, 5).Select(Case); [TestCaseSource(nameof(Cases)), Parallelizable(ParallelScope.Children)] public void ItShouldSleep(TimeSpan t) => Thread.Sleep(t); } }