Как настроить Selenium Grid с параллельным выполнением теста NUnit3?

Наша текущая среда тестирования C#/Nunit 2.6.3 имеет набор регрессионных тестов, выполнение которого на одном компьютере занимает более 35 часов, а некоторые тесты длятся до 20 минут. Настройка пакетов тестов для запуска на нескольких машинах занимает много времени и неэффективна, поэтому я пытаюсь перенести тесты на NUnit 3, чтобы получить преимущества параллельного выполнения в Selenium Grid.

Моя цель - иметь 12 узлов, на каждом из которых работает один экземпляр IE. Однако похоже, что тестовый адаптер NUnit3 для VS пытается запустить все тесты одновременно.

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

  • Хаб со следующей конфигурацией:java -jar selenium-server-standalone-2.48.2.jar -role hub -newSessionWaitTimeout:-1 -browserTimeout 120 -timeout 3600
  • Один узел в конфигурации по умолчанию.

  • Два тестовых стенда, в каждом по 10 тестов. Тестовые приборы имеют следующий атрибут: [Parallelizable(ParallelScope.Self)]

В этой ситуации я ожидаю, что, поскольку только один узел поддерживает один экземпляр IE, будет выполнен только один тест. Затем концентратор отправлял следующий тест в очереди на узел, когда он освобождался. Однако похоже, что оба тестовых прибора запускаются одновременно. Один тест передается узлу, но тесты на другом приборе не выполняются со следующим сообщением:

Сообщение о результате:
OpenQA.Selenium.WebDriverException: HTTP-запрос к удаленному серверу WebDriver для URL http://localhost:4444/wd/hub/session истекло через 60 секунд. ----> System.Net.WebException: время ожидания операции истекло

Когда я использовал сетку в Eclipse в среде Java/JUnit, у меня не было проблем. Концентратор будет ставить тесты в очередь до тех пор, пока узел не освободится без тайм-аута, используя конфигурацию по умолчанию.

Кто-нибудь знает правильную конфигурацию или это проблема с тестовым адаптером NUnit 3? Выбор браузера, к сожалению, зафиксирован как IE.


person CynicalBiker    schedule 04.05.2016    source источник


Ответы (1)


Я обнаружил, что количество параллельных потоков можно контролировать, установив атрибут LevelOfParallelism в файле AssemblyInfo.

//Determines the number parallel threads that run simultaneously
[assembly: LevelOfParallelism(7)]

Если для этого атрибута установлено количество доступных узлов, то очередь тестов, как я и ожидал.

person CynicalBiker    schedule 11.05.2016