Прекратить выполнение определенных тестов параллельно, но только с помощью другого - PullRequest
0 голосов
/ 25 октября 2019

Я пишу тесты в Selenium, используя NUnit. Я запускаю тесты в Firefox, Chrome и IE. вот так:

    [TestFixture(typeof(ChromeDriver))]
    [TestFixture(typeof(FirefoxDriver))]
    [TestFixture(typeof(InternetExplorerDriver))]
    [Parallelizable]   
    class ProgramTests<TWebDriver> where TWebDriver : IWebDriver, new()
    { 
        [tests in here] 
    }

Проблема, с которой я столкнулся, заключается в том, что один из моих тестов изменяет некоторые параметры, которые являются внешними по отношению к веб-экземпляру. Это означает, что если этот тест выполняется в IE, а затем Chrome запускает тест, можно изменить настройки, в то время как другой проверяет их, запутав тесты.

Если я использую атрибут NonParallelizable, тесты просто выполнят одинпо одному, как только все параллельные будут сделаны.

Есть ли способ сделать параллелизацию тестов, но только не друг с другом?

1 Ответ

0 голосов
/ 25 октября 2019

[Parallelizable] является сокращением для [Parallelizable(ParallelScope.Self)].

Когда вы используете его на TestFixture, это означает, что прибор может работать параллельно с другими приборами. Если прибор является параметризованным, как у вас, экземпляры для каждого драйвера могут работать параллельно друг с другом, а также с любыми другими приборами. Методы тестирования в приборе по умолчанию являются непараллелизуемыми.

Для того чтобы методы испытаний были распараллеливаемыми, вы можете использовать отдельные атрибуты для каждого метода или указать область параллелизации на уровне прибора. На TestFixture у вас есть следующие опции.

  • [Parallelizable(ParallelScope.Self)] работает, как описано выше.

  • [Parallelizable(ParallelScope.Children)] вызывает приспособлениебыть непараллелизуемым, но позволяет выполнять все тесты параллельно друг другу.

  • [Parallelizable(ParallelScope.All)] допускает параллельную работу приборов и методов испытаний.

При принятии решения о том, какой путь выбрать, важнопомните, что ParallelizableAttribute не делает ваши тесты способными работать параллельно, просто обещает NUnit, что их можно нормально запускать.

Inв частности, обычно невозможно запустить тестовые случаи, в которых используется один и тот же драйвер Selenium, потому что каждый тест изменяет состояние драйвера таким образом, что это удивляет другие выполняющиеся тесты!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...