TestNG ви позволява да стартирате паралелно тестови методи, тестови класове и тестови случаи във вашия проект. Чрез извършване на паралелно изпълнение можем да намалим „времето за изпълнение“, тъй като тестовете се стартират и изпълняват едновременно в различни нишки.
Тук ще видим как да стартираме множество класове (известни още като различни пакети) с помощта на TestNG.
Стъпка 1) Създаване на файл TestNG.xml за изпълнение на тест
За да направите това, следвайте стъпките по-долу.
- Създайте нов проект в eclipse
- Създайте два пакета в проектите (наречете ги като com.suite1 и com.suite2)
- Създайте клас във всеки пакет (наречете ги като Flipkart.java и Snapdeal.java) и копирайте долния код в съответните класове
- Създайте нов файл във вашия проект и го наименувайте като testng.xml (Уверете се, че сте инсталирали приставка за тестване за затъмнение, инструкциите са налични тук). 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 ();Низ потребителско име = ""; // Променете вашето потребителско име и паролаНиз парола = "";// Този метод е да навигирате в URL адреса на flipkart@BeforeClasspublic void init () {driver.manage (). window (). maximize ();driver.manage (). timeouts (). implicitlyWait (60, TimeUnit.SECONDS);driver.navigate (). to ("https://www.flipkart.com");}// За да влезете в flipkart@Тестпублично невалидно влизане () {driver.findElement (By.partialLinkText ("Login")). 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 ();}@Тестпублична невалидна 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 потребител = driver.findElement (By.partialLinkText (потребителско име));s.moveToElement (потребител) .build (). perform ();driver.findElement (By.linkText ("Изход")). click ();}@След часоветепублично невалидно отказване () {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 ();Низ потребителско име = ""; // Променете вашето потребителско име и паролаНиз парола = "";Низ pinCode = "";// Този метод е да навигирате в URL адреса на snapdeal@BeforeClasspublic void init () {driver.manage (). window (). maximize ();driver.manage (). timeouts (). implicitlyWait (60, TimeUnit.SECONDS);driver.navigate (). to ("https://www.snapdeal.com");}// За да влезете в flipkart@Тестпублично невалидно влизане () {driver.findElement (By.xpath ("// бутон [текст () = 'Вход']")). кликнете ();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 ();}@Тестпублична невалидна buyAndRemoveFromCart () {driver.findElement (By.xpath ("// li [съдържа (text (), 'Silver')]")). click ();driver.findElement (By.id ("проверка на pincode")). 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 ();}@След часоветепублично невалидно отказване () {driver.close ();}}
TestNg.xml
<класове> <класове>
Окончателната структура на проекта изглежда по-долу,
Стъпка 2) Паралелно изпълнение в TestNG
След създаването на xml файл, както е показано по-горе, в следващата стъпка ще изпълним паралелния тест. По-долу е кодът.
1) count-thread : Използва се за паралелно изпълнение въз основа на числовия скрипт. Той ще се изпълни в паралелен или последователен ред.
2) подробен : Използва се за регистриране на подробностите за изпълнението в конзолата. Стойността трябва да бъде 1-10. Подробностите за регистрационния файл в прозореца на конзолата ще станат по-подробни и по-ясни, когато увеличавате стойността на подробния атрибут в конфигурационния файл testng.xml.
3) name : Име на апартамента. Тук е "Gmail Suite"
4) Паралелно : За да стартирате скриптове паралелно, стойността може да бъде тестове / класове / методи / пакети. Стойността по подразбиране е никаква
Щракнете с десния бутон върху testng.xml и изберете стартиране като тестване, след успех ще видите всички резултати
Когато изпълните горния код, ще получите следния изход.
Изход:
1) име на пакета, дадено в testng.xml
2) име на теста, дадено в testng.xml
3) име на класа, даден в testng.xml
4) имена на методи, отбелязани с @Test във .java файл
По същия начин той ще изпълни тестовия пакет и за моментална сделка.
Заключение:
Тук видяхме в горния пример как да използваме Testng за изпълнение на паралелен тест. TestNG дава възможност за паралелно изпълнение на множество тестове в един конфигурационен файл (XML).