TestNG дозволяє запускати методи тестування, тестові класи та тестові кейси паралельно всередині вашого проекту. Виконуючи паралельне виконання, ми можемо зменшити «час виконання», оскільки тести запускаються та виконуються одночасно в різних потоках.
Тут ми побачимо, як запустити кілька класів (вони ж різні набори) за допомогою TestNG.
Крок 1) Створення файлу TestNG.xml для виконання тесту
Для цього виконайте наведені нижче дії.
- Створіть новий проект у затемненні
- Створіть два пакети в проектах (назвіть їх як com.suite1 та com.suite2)
- Створіть клас у кожному пакунку (назвіть їх Flipkart.java та Snapdeal.java) і скопіюйте наведений нижче код у відповідні класи
- Створіть у своєму проекті новий файл і назвіть його testng.xml (переконайтесь, що ви встановили плагін тестування на eclipse, інструкції доступні тут) Testng.xml містить всю конфігурацію (імена класів, імена тестів та імена костюмів.
Flipkart.java
пакет com.suite1;імпортувати java.util.concurrent.TimeUnit;імпорт org.openqa.selenium.Alert;імпорт org.openqa.selenium.By;імпорт org.openqa.selenium.WebDriver;імпорт org.openqa.selenium.WebElement;імпорт org.openqa.selenium.firefox.FirefoxDriver;імпорт org.openqa.selenium.interactions.Actions;імпорт org.testng.annotations.AfterClass;імпорт org.testng.annotations.BeforeClass;імпорт org.testng.annotations.Test;публічний клас Flipkart {Драйвер WebDriver = новий FirefoxDriver ();Рядок username = ""; // Змінити своє ім’я користувача та парольРядок пароль = "";// Цей метод полягає в навігації за URL-адресою flipkart@BeforeClasspublic void init () {driver.manage (). window (). maximize ();driver.manage (). timeouts (). неявноWait (60, TimeUnit.SECONDS);driver.navigate (). to ("https://www.flipkart.com");}// Увійти в flipkart@ Тестpublic void login () {driver.findElement (By.partialLinkText ("Вхід")). click ();driver.findElement (By.cssSelector (". Fk-input.login-form-input.user-email")).sendKeys (ім'я користувача);driver.findElement (By.cssSelector (". Fk-input.login-form-input.user-pwd")).sendKeys (пароль);driver.findElement (By.cssSelector (". submit-btn.login-btn.btn")). click ();}// Пошук товару@ Тестpublic void searchAndSelectProduct () {driver.findElement (By.id ("fk-top-search-box")). sendKeys ("moto g3");driver.findElement (By.cssSelector ("search-bar-submit.fk-font-13.fk-font-bold")).click ();// виділення першого елемента в результатах пошукуРядок css = ".gd-row.browse-grid-row: nth-of-type (1)> div: nth-child (1)> div> div: nth-child (2)> div> a";driver.findElement (By.cssSelector (css)). click ();}@ Тестpublic void buyAndRemoveFromCart () {driver.findElement (By.cssSelector (". Btn-express-checkout.btn-big.current")).click ();driver.findElement (By.cssSelector (". remove.fk-inline-block")). click ();Оповіщення a = driver.switchTo (). Alert ();a.accept ();}@ Тестpublic void logout () {Дії s = нові Дії (драйвер);Користувач WebElement = драйвер.findElement (By.partialLinkText (ім'я користувача));s.moveToElement (користувач) .build (). perform ();driver.findElement (By.linkText ("Вихід")). click ();}@Після занятьpublic void quit () {driver.close ();}}
SnapDeal.java
пакет com.suite2;імпортувати java.util.concurrent.TimeUnit;імпорт org.openqa.selenium.Alert;імпорт org.openqa.selenium.By;імпорт org.openqa.selenium.WebDriver;імпорт org.openqa.selenium.WebElement;імпорт org.openqa.selenium.firefox.FirefoxDriver;імпорт org.openqa.selenium.interactions.Actions;імпорт org.testng.annotations.AfterClass;імпорт org.testng.annotations.BeforeClass;імпорт org.testng.annotations.Test;публічний клас SnapDeal {Драйвер WebDriver = новий FirefoxDriver ();Рядок username = ""; // Змінити своє ім’я користувача та парольРядок пароль = "";Рядок pinCode = "";// Цей метод полягає в навігації за URL-адресою швидкого доступу@BeforeClasspublic void init () {driver.manage (). window (). maximize ();driver.manage (). timeouts (). неявноWait (60, TimeUnit.SECONDS);driver.navigate (). to ("https://www.snapdeal.com");}// Увійти в flipkart@ Тестpublic void login () {driver.findElement (By.xpath ("// кнопка [text () = 'Вхід']")). click ();driver.switchTo (). frame ("loginIframe");driver.findElement (By.cssSelector ("div [onClick = 'getLoginForm ()']")).click ();driver.findElement (By.id ("j_username")). sendKeys (ім'я користувача);driver.findElement (By.id ("j_password_login")). sendKeys (пароль);driver.findElement (By.id ("signin_submit")). click ();driver.switchTo (). defaultContent ();}// Пошук товару@ Тестpublic void searchAndSelectProduct () {driver.findElement (By.cssSelector (". col-xs-20.searchformInput.keyword")).sendKeys ("iphone 6s");driver.findElement (By.cssSelector (". sd-icon.sd-icon-search")). click ();// виділення першого елемента в результатах пошукуРядок css = ".product_grid_row: nth-of-type (1)> div: nth-child (1)";driver.findElement (By.cssSelector (css)). click ();}@ Тестpublic void buyAndRemoveFromCart () {driver.findElement (By.xpath ("// li [містить (текст (), 'Срібний')]")). click ();driver.findElement (By.id ("перевірка PIN-коду")). sendKeys (pinCode);driver.findElement (By.id ("buy-button-id")). click ();driver.findElement (By.cssSelector ("i [title = 'Видалити елемент']")). click ();Оповіщення a = driver.switchTo (). Alert ();a.accept ();}@ Тестpublic void logout () {driver.findElement (By.linkText ("ПОЧАТИ ПОКУПКУ ЗАРАЗ")). click ();Дії s = нові Дії (драйвер);Користувач WebElement = driver.findElement (By.cssSelector (". Sd-icon.sd-icon-user"));s.moveToElement (користувач) .build (). perform ();driver.findElement (By.linkText ("Вихід")). click ();}@Після занятьpublic void quit () {driver.close ();}}
TestNg.xml
<класи> <класи>
Остаточна структура проекту виглядає, як показано нижче,
Крок 2) Паралельне виконання в TestNG
Після створення xml-файлу, як показано вище, на наступному кроці ми виконаємо паралельний тест. Нижче наведено код.
1) count-thread : Це використовується для паралельного виконання на основі скрипту числа. Він буде виконуватися в паралельному або послідовному порядку.
2) детальний : Він використовується для реєстрації деталей виконання у консолі. Значення має бути 1-10. Деталі журналу у вікні консолі стають детальними та зрозумілішими, коли ви збільшуєте значення детального атрибута у файлі конфігурації testng.xml.
3) назва : Назва сюїти. Ось "Gmail Suite"
4) Паралельно : Для паралельного запуску скриптів значенням можуть бути тести / класи / методи / набори. Значення за замовчуванням відсутнє
Клацніть правою кнопкою миші на testng.xml і виберіть "Запустити як тестування", після успіху ви побачите всі результати
Коли ви виконаєте наведений вище код, ви отримаєте наступний результат.
Вихід:
1) назва набору, вказана в testng.xml
2) назва тесту, вказана в testng.xml
3) назва класу, вказана в testng.xml
4) імена методів, позначені @Test у файлі .java
Так само він буде виконувати набір тестів і для швидкої угоди.
Висновок:
Тут ми бачили у наведеному вище прикладі, як використовувати Testng для виконання паралельного тесту. TestNG дає можливість виконувати кілька тестів паралельно в одному файлі конфігурації (XML).