atesting.ru Блог Параллельное выполнение тестов в TestNG [параллельное выполнение и многопоточность]

Параллельное выполнение тестов в TestNG [параллельное выполнение и многопоточность]

Параллельное выполнение тестов в TestNG:

Бывают ситуации, когда мы хотим запустить несколько тестов в одном или разных браузерах одновременно. В таких случаях мы можем использовать атрибут «parallel» в testng.xml для выполнения параллельного выполнения теста в TestNG

Смотрите: кроссбраузерное тестирование в Selenium с использованием BrowserStack

< p> Атрибут parallel тега набора может принимать четыре значения:

tests — Все тестовые примеры внутри & lt; test & gt; тег файла testng.xml будет запускаться параллельно

классы — Все тестовые примеры внутри класса java будут выполняться параллельно

методы — Все методы с аннотацией @Test будут выполняться параллельно

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

давайте посмотрим на пример выполнения параллельного теста в TestNG.

В приведенной ниже программе я использовал два метода. Первые методы открывают драйвер Firefox, переходят на https://www.softwaretestingmaterial.com и закрывают браузер. Второй метод открывает драйвер Chrome, переходит по тому же URL-адресу и закрывает браузер.

Java

123456789101112131415161718192021222324252627282930 программный пакетTestingMaterial; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.annotations.Test; открытый класс ParallelTests {@Test public void getFirefox () {//System.setProperty("webdriver.gecko.driver&#34 ;, & # 34; geckodriver.exe path & # 34;); System.setProperty (& # 34; webdriver.gecko.driver & # 34 ;, & # 34; D: //Среда Selenium //Драйверы //geckodriver.exe & # 34;); System.out.println (& # 34; Метод GetFirefox работает в Thread: & # 34; + Thread.currentThread (). GetId ()); Драйвер WebDriver = новый FirefoxDriver (); driver.get (& # 34; https: //www.softwaretestingmaterial.com"); driver.close (); } @Test public void getChorme () {//System.setProperty("webdriver.chrome.driver&#34 ;, & # 34; путь chromedriver.exe & # 34;); System.setProperty (& # 34; webdriver.chrome.driver & # 34 ;, & # 34; D: //Среда Selenium //Драйверы //chromedriver.exe & # 34;); System.out.println (& # 34; Метод GetChrome работает в Thread: & # 34; + Thread.currentThread (). GetId ()); Драйвер WebDriver = новый ChromeDriver (); driver.get (& # 34; https: //www.softwaretestingmaterial.com"); driver.close (); }}

testng.xml без упоминания атрибута parallel :

123456789 & lt;? xml version = & # 34; 1.0 & # 34; encoding = & # 34; UTF-8 & # 34;? & gt; & lt;! DOCTYPE suite SYSTEM & # 34; http: //testng.org/testng-1.0.dtd" & gt; & lt; suite name = & # 34; программный тестовый материал & # 34; & gt; & lt; test name = & # 34; testngTest & # 34; & gt; & lt; классы & gt; & lt; class name = & # 34; softwareTestingMaterial.ParallelTests & # 34;/& gt; & lt;/classes & gt; & lt;/test & gt; & lt;/suite & gt;

После запуска testng.xml с использованием вышеупомянутого кода сначала вы могли увидеть браузер firefox в действии, а затем вы можете увидеть драйвер Chrome в действии.

Чтобы запустить оба браузера параллельно, используйте приведенный ниже код в файле testng.xml.

123456789 & lt;? xml version = & # 34; 1.0 & # 34; encoding = & # 34; UTF-8 & # 34;? & gt; & lt;! DOCTYPE suite SYSTEM & # 34; http: //testng.org/testng-1.0.dtd" & gt; & lt; suite name = & # 34; программный тестовый материал & # 34; parallel = & # 34; методы & # 34; количество потоков = & # 34; 2 & # 34; & gt; & lt; test name = & # 34; testngTest & # 34; & gt; & lt; классы & gt; & lt; class name = & # 34; softwareTestingMaterial.ParallelTests & # 34;/& gt; & lt;/classes & gt; & lt;/test & gt; & lt;/suite & gt;

Запустив testng.xml с помощью приведенного выше кода, вы сможете увидеть оба браузера в действии одновременно.

Здесь, в приведенном выше файле testng.xml, я передал parallel = методы и thread-count = 2 на уровне набора. Я хотел бы выполнять сценарии selenium параллельно в разных потоках. В большинстве случаев эти два метода будут выполняться в разных потоках. Идентификатор потока может меняться при каждом запуске. Здесь мы просто передаем количество потоков, но мы не назначаем какой-либо идентификатор потока, о назначении идентификатора потока позаботится ваш системный процессор.

Вы можете найти полный Учебник по TestNG здесь.

Полное руководство по TestNG

Здесь я отобрал несколько сообщений, которые помогут вам узнать больше о материалах, связанных с интервью:

  • Вопросы на собеседовании по TestNG
  • Объяснение инфраструктуры автоматизации тестирования
  • Вопросы на собеседовании по платформе автоматизации тестирования
  • Вопросы на собеседовании по SQL
  • Вопросы для собеседования по ручному тестированию
  • Вопросы для собеседований по Agile
  • Почему вы выбираете тестирование программного обеспечения в качестве карьеры
  • Общие вопросы для собеседований

Если у вас есть еще вопросы, задавайте их в комментариях. Если вы найдете этот пост полезным, поделитесь им с друзьями в социальных сетях.

TAG: qa