Выполнить тест в последовательности в nunit

1

Я хочу выполнить некоторые nunit/С# тесты в sequnce. Я тестирую webdriver в браузере. и что я не буду делать, это выполнить мой тест последовательно с несколькими платформами и несколькими устройствами. Я попытался с помощью [TestFixture ("Android", "Android", "LG Nexus 4")] [TestFixture ("Android", "Samsung Galaxy S III")] и конструктор для моего класса. но это не сработало. Не могли бы вы мне помочь?

[TestFixture("android", "Android", "LG Nexus 4")]
[TestFixture("android", "Samsung Galaxy S III")]
public class Multi
{
    private IWebDriver driver;
    private string _browsername;
    private string _platform;
    private string _device;

    public void Multi(string browsername, string platform, string device)
    { 
        _browsername = browsername;
        _platform  = platform;
        _device = device;

    }

    [SetUp]
    public void Init()
    {
        DesiredCapabilities capability = new DesiredCapabilities();

        capability.SetCapability("browserstack.user", "test");
        capability.SetCapability("browserstack.key", "test");
        capability.SetCapability("browserstack.local", "true");

        capability.SetCapability("browserName", _browsername);
        capability.SetCapability("platform", _platform);

        capability.SetCapability("device", _device);

        driver = new RemoteWebDriver(
          new Uri("http://hub.browserstack.com/wd/hub/"), capability
        );
        driver.Navigate().GoToUrl("http://sunet.se");



    }

    [Test]
    public void StartTest()
    {
        Thread.Sleep(5000);
        driver.FindElement(By.XPath("/html/body/div[2]/div/div/div[1]/div[1]/div[2]/div/div[1]/div/div/div[2]/div/a")).Click();

        }

    }

    [TestFixtureTearDown]
    public void Cleanup()
    {
        driver.Quit();
    }
}
Теги:
selenium-webdriver
nunit

2 ответа

1

У вашего класса Multi есть конструктор для первой сигнатуры (3 строки) TestFixture, но не для второй подписи (две строки). В зависимости от вашей версии NUnit это может объяснить проблему. Либо добавьте правильный конструктор, либо измените вторую подпись TestFixture

0

Не пробовал это сам, но есть библиотека, которую вы могли бы использовать, чтобы сделать это под названием NUnit Sequencer.

https://www.ingenuityworking.com/knowledge/w/knowledgebase/1354.nunit-sequencer-tool-to-sequence-run-ordered-nunit-tests-and-fixtures-by-setting-attributes.aspx

Кажется, что немного конфигурации, чтобы настроить его, но он позволяет вам украшать ваши тестовые приборы атрибутами, которые определяют имена теста в том порядке, в котором вы хотите их запустить.

Пример:

[TestFixture]
[SequencedTestFixture("SubtractTest", "AddTest")]
public class ArithmeticTests1

Сначала будет выполняться тест под названием SubtractTest, а затем тест под названием AddTest.

Обратите внимание, что модульные тесты предназначены для запуска полностью независимо друг от друга, и поэтому они обычно выполняются в нелогичном порядке (хотя NUnit, похоже, находится в алфавитном порядке).

На самом деле, если вы не хотели использовать библиотеку, о которой я упоминал, быстрым решением было бы переименовать ваши тестовые приборы, такие как 0001_DoThisThingFirst, и 0002_DoSomethingElse и т.д. - таким образом NUnit будет запускать их в алфавитном порядке. Однако это может стать головной болью.

  • 0
    Хорошо, похоже, я застряну с дублированным кодом. Но пока все нормально. Спасибо за ответ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню