TestNG: Meerdere testsuites uitvoeren in Selenium

Inhoudsopgave:

Anonim

Met TestNG kunt u testmethoden, testklassen en testcases parallel uitvoeren binnen uw project. Door parallelle uitvoering uit te voeren, kunnen we de 'uitvoeringstijd' verkorten omdat tests tegelijkertijd in verschillende threads worden gestart en uitgevoerd.

Hier zullen we zien hoe u meerdere klassen (ook wel verschillende suites genoemd) kunt uitvoeren met TestNG.

Stap 1) Een TestNG.xml-bestand maken om de test uit te voeren

Volg hiervoor de onderstaande stappen.

  1. Maak een nieuw project in eclips
  2. Maak twee pakketten in de projecten (noem ze com.suite1 en com.suite2)
  3. Maak een klasse in elk pakket (noem ze Flipkart.java en Snapdeal.java) en kopieer de onderstaande code in de respectievelijke klassen
  4. Maak een nieuw bestand in uw project en noem het testng.xml (zorg ervoor dat u de testplug-in voor eclipse hebt geïnstalleerd, instructies zijn hier beschikbaar). Testng.xml bevat alle configuratie (classnames, testnames en suitnames.

Flipkart.java

pakket com.suite1;importeer java.util.concurrent.TimeUnit;importeer org.openqa.selenium.Alert;import org.openqa.selenium.By;importeer org.openqa.selenium.WebDriver;importeer org.openqa.selenium.WebElement;importeer org.openqa.selenium.firefox.FirefoxDriver;import org.openqa.selenium.interactions.Actions;importeer org.testng.annotations.AfterClass;importeer org.testng.annotations.BeforeClass;importeer org.testng.annotations.Test;openbare klas Flipkart {WebDriver-stuurprogramma = nieuwe FirefoxDriver ();String gebruikersnaam = ""; // Wijzig uw gebruikersnaam en wachtwoordString wachtwoord = "";// Deze methode is om door de flipkart-URL te navigeren@Voor klasopenbare ongeldige init () {driver.manage (). window (). maximaliseren ();driver.manage (). timeouts (). implicitlyWait (60, TimeUnit.SECONDS);driver.navigate (). naar ("https://www.flipkart.com");​// Om flipkart in te loggen@Testopenbare ongeldige login () {driver.findElement (By.partialLinkText ("Login")). klik ();driver.findElement (By.cssSelector (". Fk-input.login-form-input.user-email")).sendKeys (gebruikersnaam);driver.findElement (By.cssSelector (". Fk-input.login-form-input.user-pwd")).sendKeys (wachtwoord);driver.findElement (By.cssSelector (". submit-btn.login-btn.btn")). click ();​// Zoeken naar product@Testopenbare ongeldige searchAndSelectProduct () {driver.findElement (By.id ("fk-top-search-box")). sendKeys ("moto g3");driver.findElement (By.cssSelector ("zoekbalk-submit.fk-font-13.fk-font-bold")).Klik();// selecteer het eerste item in de zoekresultatenString 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)). klik ();​@Testopenbare ongeldige buyAndRemoveFromCart () {driver.findElement (By.cssSelector (". Btn-express-checkout.btn-big.current")).Klik();driver.findElement (By.cssSelector (". remove.fk-inline-block")). click ();Waarschuw a = driver.switchTo (). Alert ();a.accept ();​@Testopenbare ongeldige afmelding () {Acties s = nieuwe acties (stuurprogramma);WebElement user = driver.findElement (By.partialLinkText (gebruikersnaam));s.moveToElement (gebruiker) .build (). perform ();driver.findElement (By.linkText ("Logout")). klik ();​@Na de lesopenbare leegte stoppen () {driver.close ();​​

SnapDeal.java

pakket com.suite2;importeer java.util.concurrent.TimeUnit;importeer org.openqa.selenium.Alert;import org.openqa.selenium.By;importeer org.openqa.selenium.WebDriver;importeer org.openqa.selenium.WebElement;importeer org.openqa.selenium.firefox.FirefoxDriver;import org.openqa.selenium.interactions.Actions;importeer org.testng.annotations.AfterClass;importeer org.testng.annotations.BeforeClass;importeer org.testng.annotations.Test;openbare les SnapDeal {WebDriver-stuurprogramma = nieuwe FirefoxDriver ();String gebruikersnaam = ""; // Wijzig uw gebruikersnaam en wachtwoordString wachtwoord = "";String pinCode = "";// Deze methode is om door de snapdeal-URL te navigeren@Voor klasopenbare ongeldige init () {driver.manage (). window (). maximaliseren ();driver.manage (). timeouts (). implicitlyWait (60, TimeUnit.SECONDS);driver.navigate (). naar ("https://www.snapdeal.com");​// Om flipkart in te loggen@Testopenbare ongeldige login () {driver.findElement (By.xpath ("// button [text () = 'Login']")). click ();driver.switchTo (). frame ("loginIframe");driver.findElement (By.cssSelector ("div [onClick = 'getLoginForm ()']")).Klik();driver.findElement (By.id ("j_username")). sendKeys (gebruikersnaam);driver.findElement (By.id ("j_password_login")). sendKeys (wachtwoord);driver.findElement (By.id ("signin_submit")). klik ();driver.switchTo (). defaultContent ();​// Zoeken naar product@Testopenbare ongeldige searchAndSelectProduct () {driver.findElement (By.cssSelector (". col-xs-20.searchformInput.keyword")).sendKeys ("iphone 6s");driver.findElement (By.cssSelector (". sd-icon.sd-icon-search")). klik ();// selecteer het eerste item in de zoekresultatenString css = ".product_grid_row: nth-of-type (1)> div: nth-child (1)";driver.findElement (By.cssSelector (css)). klik ();​@Testopenbare ongeldige buyAndRemoveFromCart () {driver.findElement (By.xpath ("// li [bevat (text (), 'Silver')]")). click ();driver.findElement (By.id ("pincode-check")). sendKeys (pinCode);driver.findElement (By.id ("buy-button-id")). click ();driver.findElement (By.cssSelector ("i [title = 'Item verwijderen']")). click ();Waarschuw a = driver.switchTo (). Alert ();a.accept ();​@Testopenbare ongeldige afmelding () {driver.findElement (By.linkText ("BEGIN NU MET WINKELEN")). click ();Acties s = nieuwe acties (stuurprogramma);WebElement user = driver.findElement (By.cssSelector (". Sd-icon.sd-icon-user"));s.moveToElement (gebruiker) .build (). perform ();driver.findElement (By.linkText ("Logout")). klik ();​@Na de lesopenbare leegte stoppen () {driver.close ();​​

TestNg.xml

De uiteindelijke projectstructuur ziet er als volgt uit,

Stap 2) Parallelle uitvoering in TestNG

Nadat we een xml-bestand hebben gemaakt zoals hierboven weergegeven, zullen we in de volgende stap de parallelle test uitvoeren. Hieronder staat de code.

1) aantal threads : dit wordt gebruikt voor parallelle uitvoering, op basis van het nummer-script. Het wordt in parallelle of opeenvolgende volgorde uitgevoerd.

2) uitgebreid : het wordt gebruikt om de uitvoeringsdetails in de console te loggen. De waarde moet 1-10 zijn. De logboekdetails in het consolevenster worden gedetailleerder en duidelijker naarmate u de waarde van het uitgebreide attribuut in het testng.xml-configuratiebestand verhoogt.

3) naam : naam van de suite. Hier is het "Gmail Suite"

4) Parallel : om scripts parallel uit te voeren, kan de waarde tests / klassen / methoden / suites zijn. De standaardwaarde is geen

Klik met de rechtermuisknop op testng.xml en selecteer uitvoeren als testen. Als dit eenmaal is gelukt, ziet u alle resultaten

Als u de bovenstaande code uitvoert, krijgt u de volgende uitvoer.

Uitgang:

1) naam van de suite gegeven in testng.xml

2) naam van de test gegeven in testng.xml

3) naam van de klasse gegeven in testng.xml

4) methodenamen geannoteerd met @Test in .java-bestand

Evenzo zal het ook een testsuite uitvoeren voor een snelle deal.

Gevolgtrekking:

Hier hebben we in het bovenstaande voorbeeld gezien hoe Testng te gebruiken om een ​​parallelle test uit te voeren. TestNG biedt een optie om meerdere tests parallel uit te voeren in een enkel configuratiebestand (XML).