TestNG lar deg kjøre testmetoder, testklasser og testtilfeller parallelt inne i prosjektet. Ved å utføre parallell utførelse kan vi redusere 'utførelsestiden' når tester startes og utføres samtidig i forskjellige tråder.
Her vil vi se hvordan du kjører flere klasser (aka forskjellige suiter) ved hjelp av TestNG.
Trinn 1) Opprette en TestNG.xml-fil for å utføre testen
Følg trinnene nedenfor for å gjøre det.
- Lag et nytt prosjekt i formørkelse
- Lag to pakker i prosjektene (gi dem navnet com.suite1 og com.suite2)
- Lag en klasse i hver pakke (gi dem navnet Flipkart.java og Snapdeal.java) og kopier koden nedenfor i respektive klasser
- Opprett en ny fil i prosjektet og gi den navnet testng.xml (Forsikre deg om at du har installert testplugin for formørkelse, instruksjoner tilgjengelig her). Testng.xml inneholder alle konfigurasjoner (klassenavn, testnavn og dressnavn.
Flipkart.java
pakke com.suite1;importere java.util.concurrent.TimeUnit;importer org.openqa.selenium.Alert;importer org.openqa.selenium.By;importer org.openqa.selenium.WebDriver;importer org.openqa.selenium.WebElement;importer org.openqa.selenium.firefox.FirefoxDriver;importer org.openqa.selenium.interactions.Action;importer org.testng.annotations.AfterClass;importer org.testng.annotations.BeforeClass;importer org.testng.annotations.Test;offentlig klasse Flipkart {WebDriver-driver = ny FirefoxDriver ();String brukernavn = ""; // Bytt til brukernavn og passordStrengpassord = "";// Denne metoden er å navigere i flipkart URL@BeforeClassoffentlig ugyldig init () {driver.manage (). vindu (). maksimere ();driver.manage (). timeouts (). implicitWait (60, TimeUnit.SECONDS);driver.navigate (). til ("https://www.flipkart.com");}// For å logge på flipkart@Testoffentlig ugyldig pålogging () {driver.findElement (By.partialLinkText ("Login")). klikk ();driver.findElement (By.cssSelector (". Fk-input.login-form-input.user-email")).sendKeys (brukernavn);driver.findElement (By.cssSelector (". Fk-input.login-form-input.user-pwd")).sendKeys (passord);driver.findElement (By.cssSelector (". submit-btn.login-btn.btn")). klikk ();}// Søk etter produkt@Testpublic 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")).klikk ();// velg det første elementet i søkeresultateneStreng css = ".gd-row.browser-grid-row: nth-of-type (1)> div: nth-child (1)> div> div: nth-child (2)> div> a";driver.findElement (By.cssSelector (css)). klikk ();}@Testoffentlig ugyldig buyAndRemoveFromCart () {driver.findElement (By.cssSelector (". Btn-express-checkout.btn-big.current")).klikk ();driver.findElement (By.cssSelector (". remove.fk-inline-block")). klikk ();Varsel a = driver.switchTo (). Varsel ();a.accept ();}@Testoffentlig tomrom utlogging () {Handlinger s = nye handlinger (driver);WebElement bruker = driver.findElement (By.partialLinkText (brukernavn));s.moveToElement (bruker) .build (). utføre ();driver.findElement (By.linkText ("Logout")). klikk ();}@Etter timenoffentlig ugyldig avslutte () {driver.close ();}}
SnapDeal.java
pakke com.suite2;importere java.util.concurrent.TimeUnit;importer org.openqa.selenium.Alert;importer org.openqa.selenium.By;importer org.openqa.selenium.WebDriver;importer org.openqa.selenium.WebElement;importer org.openqa.selenium.firefox.FirefoxDriver;importer org.openqa.selenium.interactions.Action;importer org.testng.annotations.AfterClass;importer org.testng.annotations.BeforeClass;importer org.testng.annotations.Test;offentlig klasse SnapDeal {WebDriver-driver = ny FirefoxDriver ();String brukernavn = ""; // Bytt til brukernavn og passordStrengpassord = "";String pinCode = "";// Denne metoden er å navigere snapdeal URL@BeforeClassoffentlig ugyldig init () {driver.manage (). vindu (). maksimere ();driver.manage (). timeouts (). implicitWait (60, TimeUnit.SECONDS);driver.navigate (). til ("https://www.snapdeal.com");}// For å logge på flipkart@Testoffentlig ugyldig pålogging () {driver.findElement (By.xpath ("// button [text () = 'Login']")). klikk ();driver.switchTo (). ramme ("loginIframe");driver.findElement (By.cssSelector ("div [onClick = 'getLoginForm ()']")).klikk ();driver.findElement (By.id ("j_username")). sendKeys (brukernavn);driver.findElement (By.id ("j_password_login")). sendKeys (passord);driver.findElement (By.id ("signin_submit")). klikk ();driver.switchTo (). defaultContent ();}// Søk etter produkt@Testpublic void searchAndSelectProduct () {driver.findElement (By.cssSelector (". col-xs-20.searchformInput.keyword")).sendKeys ("iphone 6s");driver.findElement (By.cssSelector (". sd-icon.sd-icon-search")). klikk ();// velg det første elementet i søkeresultateneStreng css = ".product_grid_row: nth-of-type (1)> div: nth-child (1)";driver.findElement (By.cssSelector (css)). klikk ();}@Testoffentlig ugyldig buyAndRemoveFromCart () {driver.findElement (By.xpath ("// li [inneholder (tekst (), 'Silver')]")). klikk ();driver.findElement (By.id ("PIN-kode-sjekk")). sendKeys (pinCode);driver.findElement (By.id ("buy-button-id")). klikk ();driver.findElement (By.cssSelector ("i [title = 'Delete Item']")). klikk ();Varsel a = driver.switchTo (). Varsel ();a.accept ();}@Testoffentlig tomrom utlogging () {driver.findElement (By.linkText ("START HANDLING NÅ")). klikk ();Handlinger s = nye handlinger (driver);WebElement-bruker = driver.findElement (By.cssSelector (". Sd-icon.sd-icon-user"));s.moveToElement (bruker) .build (). utføre ();driver.findElement (By.linkText ("Logout")). klikk ();}@Etter timenoffentlig ugyldig avslutte () {driver.close ();}}
TestNg.xml
Endelig prosjektstruktur ser ut som nedenfor,
Trinn 2) Parallell kjøring i TestNG
Etter å ha opprettet xml-fil som vist ovenfor, i neste trinn, vil vi utføre den parallelle testen. Nedenfor er koden.
1) trådtelling : Dette brukes til parallell kjøring, basert på tallskriptet. Den vil kjøres i parallell eller sekvensiell rekkefølge.
2) ordentlig : Den brukes til å logge utføringsdetaljene i konsollen. Verdien skal være 1-10. Loggdetaljene i konsollvinduet blir mer detaljerte og tydeligere når du øker verdien av det detaljerte attributtet i konfigurasjonsfilen testng.xml.
3) navn : Navnet på suiten. Her er det "Gmail Suite"
4) Parallell : For å kjøre skript parallelt, kan verdien være tester / klasser / metoder / suiter. Standardverdien er ingen
Høyreklikk på testng.xml og velg kjør som testing, når du er vellykket, ser du alle resultatene
Når du utfører koden ovenfor, får du følgende utdata.
Produksjon:
1) navnet på suiten gitt i testng.xml
2) navnet på testen gitt i testng.xml
3) navnet på klassen gitt i testng.xml
4) metodenavn kommentert med @Test i .java-fil
På samme måte vil den også utføre testpakke for snap-avtale.
Konklusjon:
Her har vi sett i eksemplet ovenfor, hvordan man bruker Testng til å utføre parallell test. TestNG gir et alternativ for å utføre flere test parallelt i en enkelt konfigurasjonsfil (XML).