Как использовать более одного браузера в Nunit / Selenium GRID / C # Setup - PullRequest
3 голосов
/ 26 апреля 2010

У меня есть Selenium GRID Setup с различными браузерами (IE6, 7, 8, FF 3.5.6), написанными на C #, и по отдельности они работают нормально. У меня также есть набор настроек Selenium Tests, и они также отлично работают с окружением, которое я им передаю. То, о чем я прошу, - это способ программно настроить различные модульные тесты для циклического перебора всех браузеров, доступных для него на Selenium GRID.

Существует не так много браузеров, поэтому такие вещи, как список или массив браузеров, хороши, но я не могу понять, как можно выполнить цикл установки и TearDown в браузерах. Я использую C # с NUnit вместе с Selenium Grid и 3 Selenium RC, подключенными к нему.

Я даже не против того, чтобы перейти на что-то вроде MbUnit, если бы это означало, что я могу перебирать браузеры.

Большое спасибо

Ответы [ 3 ]

0 голосов
/ 31 марта 2012

Если вы используете MbUnit, вы можете связать атрибут Factory с переменной. Затем сделайте возврат Data Factory один раз для каждого типа браузера, который вы хотите автоматизировать. Он будет выполнять тесты один раз для каждого браузера.

http://www.gallio.org/wiki/doku.php?id=mbunit:data-driven_testing:factory

0 голосов
/ 31 марта 2012

Если вы используете NUnit, вы можете указать параметризованные TextFixtures со всеми браузерами, которые вы хотите в базовом тестовом классе:

namespace Tests
{
    [TestFixture("*firefox")]
    [TestFixture("*iexplore")]
    public abstract class Test
    {
        private static string _browser;

        protected Test()
        {
        }

        protected Test(string browser)
        {
            SetBrowser(browser);
        }        

        public static void SetBrowser(string browser)
        {
            _browser = browser;
        }

        [SetUp]
        public virtual void Setup()
        {
            Selenium = new DefaultSelenium(localhost, 5555, _browser, "http://www.google.com/");
            Selenium.Start();
        }

        [TearDown]
        public virtual void TearDown()
        {
            Selenium.Stop();
        }
    }
}

А сами тесты будут примерно такими:

namespace Tests
{
    [TestFixture]
    public class Test1 : Test
    {
        public Test1(string browser)
        {
            SetBrowser(browser);
        }

        [Test]
        public void FirstTest()
        {
            ...
        }
   }
}

2) Вы можете указать браузер через PNunit . Минусы: каждый тест должен быть упомянут в файле test.conf. Плюсы: все указанные браузеры будут работать параллельно. Пример файла test.conf с одним тестом, указанным для двух браузеров:

<TestGroup>
  <ParallelTests>  
    <ParallelTest>
      <Name>Tests</Name>
        <Tests>

          <TestConf>
            <Name>Test1FF</Name>
            <Assembly>Test.dll</Assembly>
            <TestToRun>Test.Tests.Test1</TestToRun>
            <Machine>localhost:8080</Machine>
            <TestParams>
              <string>*firefox</string>
            </TestParams>
          </TestConf>

          <TestConf>
            <Name>Test1IE</Name>
            <Assembly>Test.dll</Assembly>
            <TestToRun>Test.Tests.Test1</TestToRun>
            <Machine>localhost:8080</Machine>
            <TestParams>
              <string>*iexplore</string>
            </TestParams>
          </TestConf>

        </Tests>
      </ParallelTest>
    </ParallelTests>
</TestGroup>

А базовый тестовый класс будет примерно таким:

using NUnit.Framework;
using PNUnit.Framework;

namespace Tests
{
    [TestFixture]
    public class Test
    {
        private string browser;

        protected Test()
        {
        }     

        [SetUp]
        public virtual void Setup()
        {
            browser = PNUnitServices.Get().GetTestParams();
            Selenium = new DefaultSelenium(localhost, 5555, browser, "http://www.google.com/");
            Selenium.Start();
        }

        [TearDown]
        public virtual void TearDown()
        {
            Selenium.Stop();
        }
    }
}

3) Вы можете указать браузеры в app.config и изменить их через TeamCity. Не исследовал это решение, поэтому не могу привести пример. Надежды первых двух решений помогут.

0 голосов
/ 11 марта 2011

Один (довольно некрасивый) вариант мог бы использовать расширение RowTest для методов тестирования, передаваемых в целевые браузеры, - за приз загрязнения реальных методов тестирования настройкой и, возможно, замедления всего набора тестов.

...