TestNG: come eseguire più suite di test in Selenium

Sommario:

Anonim

TestNG ti consente di eseguire metodi di test, classi di test e casi di test in parallelo all'interno del tuo progetto. Eseguendo l'esecuzione parallela, possiamo ridurre il "tempo di esecuzione" poiché i test vengono avviati ed eseguiti simultaneamente in thread diversi.

Qui vedremo come eseguire più classi (ovvero diverse suite) utilizzando TestNG.

Passaggio 1) Creazione di un file TestNG.xml per l'esecuzione di test

Per farlo, segui i passaggi seguenti.

  1. Crea un nuovo progetto in eclipse
  2. Crea due pacchetti nei progetti (chiamali com.suite1 e com.suite2)
  3. Crea una classe in ogni pacchetto (chiamali Flipkart.java e Snapdeal.java) e copia il codice seguente nelle rispettive classi
  4. Crea un nuovo file nel tuo progetto e chiamalo testng.xml (assicurati di aver installato il plugin di test per eclipse, istruzioni disponibili qui). Testng.xml contiene tutte le configurazioni (nomi di classi, nomi di test e nomi di abiti.

Flipkart.java

pacchetto com.suite1;import java.util.concurrent.TimeUnit;import org.openqa.selenium.Alert;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.firefox.FirefoxDriver;import org.openqa.selenium.interactions.Actions;import org.testng.annotations.AfterClass;import org.testng.annotations.BeforeClass;import org.testng.annotations.Test;public class Flipkart {Driver WebDriver = nuovo FirefoxDriver ();String username = ""; // Cambia con il tuo nome utente e passwrodString password = "";// Questo metodo serve per navigare nell'URL del flipkart@Prima della lezionepublic void init () {driver.manage (). window (). maxim ();driver.manage (). timeouts (). implicitlyWait (60, TimeUnit.SECONDS);driver.navigate (). to ("https://www.flipkart.com");}// Per accedere a flipkart@Testpublic void login () {driver.findElement (By.partialLinkText ("Login")). click ();driver.findElement (By.cssSelector (". Fk-input.login-form-input.user-email")).sendKeys (nome utente);driver.findElement (By.cssSelector (". Fk-input.login-form-input.user-pwd")).sendKeys (password);driver.findElement (By.cssSelector (". submit-btn.login-btn.btn")). click ();}// Cerca prodotto@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")).clic();// seleziona il primo elemento nei risultati della ricercaString 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)). clic ();}@Testpublic void buyAndRemoveFromCart () {driver.findElement (By.cssSelector (". Btn-express-checkout.btn-big.current")).clic();driver.findElement (By.cssSelector (". remove.fk-inline-block")). click ();Avviso a = driver.switchTo (). Alert ();a.accept ();}@Testpublic void logout () {Azioni s = nuove azioni (driver);Utente WebElement = driver.findElement (By.partialLinkText (username));s.moveToElement (utente) .build (). perform ();driver.findElement (By.linkText ("Logout")). clic ();}@Dopo la lezionepublic void quit () {driver.close ();}}

SnapDeal.java

pacchetto com.suite2;import java.util.concurrent.TimeUnit;import org.openqa.selenium.Alert;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.firefox.FirefoxDriver;import org.openqa.selenium.interactions.Actions;import org.testng.annotations.AfterClass;import org.testng.annotations.BeforeClass;import org.testng.annotations.Test;public class SnapDeal {Driver WebDriver = nuovo FirefoxDriver ();String username = ""; // Cambia con il tuo nome utente e passwrodString password = "";String pinCode = "";// Questo metodo serve per navigare nell'URL snapdeal@Prima della lezionepublic void init () {driver.manage (). window (). maxim ();driver.manage (). timeouts (). implicitlyWait (60, TimeUnit.SECONDS);driver.navigate (). to ("https://www.snapdeal.com");}// Per accedere a flipkart@Testpublic void login () {driver.findElement (By.xpath ("// button [text () = 'Login']")). click ();driver.switchTo (). frame ("loginIframe");driver.findElement (By.cssSelector ("div [onClick = 'getLoginForm ()']")).clic();driver.findElement (By.id ("j_username")). sendKeys (username);driver.findElement (By.id ("j_password_login")). sendKeys (password);driver.findElement (By.id ("signin_submit")). click ();driver.switchTo (). defaultContent ();}// Cerca prodotto@Testpublic void searchAndSelectProduct () {driver.findElement (By.cssSelector (". col-xs-20.searchformInput.keyword")).sendKeys ("iphone 6s");driver.findElement (By.cssSelector (". sd-icon.sd-icon-search")). clic ();// seleziona il primo elemento nei risultati della ricercaString css = ".product_grid_row: nth-of-type (1)> div: nth-child (1)";driver.findElement (By.cssSelector (css)). clic ();}@Testpublic void buyAndRemoveFromCart () {driver.findElement (By.xpath ("// li [contiene (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 = 'Elimina elemento']")). clic ();Avviso a = driver.switchTo (). Alert ();a.accept ();}@Testpublic void logout () {driver.findElement (By.linkText ("INIZIA A ACQUISTARE ORA")). click ();Azioni s = nuove azioni (driver);WebElement user = driver.findElement (By.cssSelector (". Sd-icon.sd-icon-user"));s.moveToElement (utente) .build (). perform ();driver.findElement (By.linkText ("Logout")). clic ();}@Dopo la lezionepublic void quit () {driver.close ();}}

TestNg.xml

La struttura finale del progetto appare come di seguito,

Passaggio 2) Esecuzione parallela in TestNG

Dopo aver creato il file xml come mostrato sopra, nel passaggio successivo eseguiremo il test parallelo. Di seguito il codice.

1) thread-count : utilizzato per l'esecuzione parallela, in base al numero di script. Verrà eseguito in ordine parallelo o sequenziale.

2) verbose : viene utilizzato per registrare i dettagli di esecuzione nella console. Il valore dovrebbe essere 1-10. I dettagli del registro nella finestra della console diventeranno più dettagliati e più chiari aumentando il valore dell'attributo verbose nel file di configurazione testng.xml.

3) nome : nome della suite. Eccolo "Gmail Suite"

4) Parallelo : per eseguire script in parallelo, il valore può essere test / classi / metodi / suite. Il valore predefinito è nessuno

Fai clic con il pulsante destro del mouse su testng.xml e seleziona Esegui come test, una volta eseguito correttamente vedrai tutti i risultati

Quando esegui il codice sopra, otterrai il seguente output.

Produzione:

1) nome della suite fornito in testng.xml

2) nome del test fornito in testng.xml

3) nome della classe fornito in testng.xml

4) nomi dei metodi annotati con @Test nel file .java

Allo stesso modo, eseguirà anche la suite di test per lo snap deal.

Conclusione:

Qui abbiamo visto nell'esempio sopra, come usare Testng per eseguire test paralleli. TestNG offre un'opzione per eseguire più test in parallelo in un unico file di configurazione (XML).