SeleniumWebdriver + TestNG: ошибочное поведение при выполнении testNg нескольких классов, выполняемых параллельно - PullRequest
0 голосов
/ 01 сентября 2018

Настройка и описание:

  1. Есть 2 тестовых класса: 1. HomepageTest & SignIntest

  2. Методы в этих тестовых классах имеют группы и приоритеты ** Цель состоит в том, чтобы выполнить этот тест с использованием групп Scebario1: когда я использую Threadcount = 1;

ниже приведены варианты поведения:

1,1. При выполнении он запускает домашнюю страницу> выполняет приоритет 1 домашней страницы теста> Затем запускает

Затем выполняет приоритет1 SignIntest

После этого он выполняет priority2 HomepageTest и priority2 SigninTest и т. Д.

1.2. После завершения выполнения он закрывает 1 браузер (домашнюю страницу), но не может закрыть другой браузер (SigninPage)

Сценарий 2: Когда я использую threadcount = 2:

Поведения: 2.1. Он одновременно открывает 2 браузера. В одном браузере он запускает URL-адрес (для URL-адреса подождите 10 секунд), но в другом браузере он не запускает ни одного URL-адреса (остается пустым в течение всего процесса тестирования)

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

заканчивается, но оставшиеся 2 браузера (BlankBrowser и Brwser With URL) остаются в открытом состоянии

2.3 После завершения выполнения он закрывает 1 браузер, но не может закрыть браузер, на котором не запущен URL-адрес

Quetion1: почему выполнение не на основе группы. Он работает на основе приоритета, как указано в 1.1, что выглядит неправильно.

В идеале он должен выполнять Group1 & 2 testClass1 затем он должен закрыть этот браузер. Затем запустить второй браузер и запустить тесты Group1 & 2, а затем закрыть этот браузер

Вопрос2: Почему не удается закрыть 1 браузер. Я посчитал активное окно, используя дескриптор окна, и count возвращал 1, тогда как оно должно быть 2

Вопрос3: Если число потоков = 2, то почему он запускает пустой браузер (как указано в 2.1)

1 Ответ

0 голосов
/ 06 сентября 2018

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

Ответ 1:

  • Группы: Предоставить только группировку методов испытаний (по функции, или сходству, или по функции).
  • Приоритет: просто приоритет, тип заказа. TestNG видит приоритет и автоматически сортирует тесты по нему, потому что у вас есть 2 теста с высшим приоритетом, он запускает их в первую очередь.
  • Группировка используется для управления выполнением нескольких тестовых примеров, но по группам, скажем, вам нужно только запустить функцию A, и все они принадлежат группе A, поэтому вы запускаете группу A.
  • Нет упорядочения, реализованного на уровне группы, потому что это не имеет смысла. Группировка это группировка, а не упорядочение. (Пример: вы видите группу собак, и вы видите ее как группу собак, а не какой-то порядок, такой как собака A, собака B, собака C и т. Д.)
  • Примечание: Если у вас есть какая-то зависимость между тестами в одном классе, параллельный запуск TestNG будет запускать группы параллельно, потому что он не может выполнять тесты параллельно, вызванные их зависимостями.

Ответ 2:

  • Если браузер остается открытым, это потому, что ваш код не закрывает его. Возможно, вам следует проверить, сколько раз вы открываете новый экземпляр и сколько раз закрываете его.
  • По вашему первому сценарию я подозреваю, что вы открываете более одного экземпляра браузера, но вы используете один и тот же WebDriver для управления им, а не закрываете второй созданный экземпляр.
  • WebDriver не просто открывает новый экземпляр браузера. Вам нужно создать экземпляр, чтобы использовать его. Точно так же WebDriver не просто закрывает экземпляр браузера, вам нужно закрыть его своим кодом.

Ответ 3:

  • Посмотри ответ 2.

Для справки в будущем: нет такого ошибочного поведения TestNG или SeleniumWebDriver или события, представляющего собой комбинацию этих двух. Это наиболее распространенная комбинация инструментов тестирования, используемых всеми инженерами по обеспечению качества. В моей компании есть параллельные тесты с числом потоков = 16, и все они работают нормально.

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

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