TestNG Tutorial
Cosa รจ TestNG?
TestNG รจ un framework di test di automazione in cui NG sta per "Next Generation". TestNG รจ ispirato da JUnit che utilizza le annotazioni (@). TestNG supera gli svantaggi di JUnit ed รจ progettato per realizzare test end-to-end Easy.
utilizzando TestNG, puoi generare un report adeguato e puoi facilmente sapere quanti casi di test sono stati superati, falliti e saltati. ร possibile eseguire separatamente i casi di test falliti.
Per esempio:
- Supponiamo di avere cinque casi di test, un metodo รจ scritto per ogni caso di test (si supponga che il programma sia scritto usando il metodo principale senza usare testNG). Quando si esegue questo programma per primo, tre metodi vengono eseguiti con successo e il quarto metodo fallisce. Quindi si correggono gli errori presenti nel quarto metodo, ora si desidera eseguire solo il quarto metodo perchรฉ i primi tre metodi vengono comunque eseguiti con successo. Ciรฒ non รจ possibile senza usare TestNG.
- Migliori TestNG in Selenium fornisce un'opzione, ovvero il file testng-failed.xml nella cartella test-output. Se vuoi eseguire solo casi di test falliti significa che esegui questo file XML. Eseguirร solo casi di test falliti.
Oltre al concetto di cui sopra, imparerai di piรน su TestNG, come quali sono i vantaggi di TestNG, come creare metodi di test utilizzando le annotazioni @test, come convertire queste classi in un file di suite di test ed eseguirle tramite Eclipse e dalla riga di comando.
Perchรฉ usare TestNG con Selenium?
Predefinito Selenium i test non generano un formato corretto per i risultati del test. Utilizzando TestNG in Selenium, possiamo generare i risultati dei test.
ponte Selenium gli utenti lo usano piรน di giunzione a causa dei suoi vantaggi. Ci sono cosรฌ tante caratteristiche di TestNG, ma ci concentreremo solo su quelli piรน importanti che possiamo utilizzare SeleniumDi seguito sono riportate le caratteristiche principali di Selenium TestNG:
- Generare il report in un formato appropriato includendo il numero di esecuzioni di casi di test, il numero di casi di test superati, il numero di casi di test falliti e il numero di casi di test saltati.
- Piรน casi di test possono essere raggruppati piรน facilmente convertendoli nel file testng.xml. In cui puoi stabilire le prioritร su quale caso di test deve essere eseguito per primo.
- Lo stesso caso di test puรฒ essere eseguito piรน volte senza cicli semplicemente utilizzando la parola chiave chiamata "conteggio invocazioni".
- Usando testng, puoi eseguire piรน casi di test su piรน browser, ad esempio cross test del browser.
- Migliori TestNG framework puรฒ essere facilmente integrato con strumenti come TestNG Maven, Jenkins, ecc.
- Le annotazioni utilizzate nei test sono molto facili da comprendere, ad esempio: @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest
- WebDriver non dispone di un meccanismo nativo per la generazione di report. TestNG puรฒ generare il report in un formato leggibile come quello mostrato di seguito.
- TestNG semplifica il modo in cui i test sono codificati. Non รจ piรน necessario un metodo main statico nei nostri test. La sequenza delle azioni รจ regolata da annotazioni di facile comprensione che non richiedono che i metodi siano statici.
- Le eccezioni non rilevate vengono gestite automaticamente da TestNG senza interrompere anticipatamente la prova. Queste eccezioni vengono segnalate come passaggi non riusciti nel report.
Vantaggi di TestNG ancora JUnit
Ci sono tre principali vantaggi di TestNG ancora JUnit:
- Le annotazioni sono piรน facili da capire
- I casi di test possono essere raggruppati piรน facilmente
- ร possibile eseguire test paralleli
Che cos'รจ l'annotazione TestNG?
Annotazioni in TestNG sono righe di codice che possono controllare come verrร eseguito il metodo sottostante. Sono sempre preceduti dal simbolo @. Molto presto e veloce TestNG L'esempio รจ quello mostrato di seguito.
Le annotazioni saranno discusse piรน avanti nella sezione denominata โAnnotazioni utilizzate in TestNG", quindi รจ perfettamente ok se non capisci quanto sopra TestNG Esempio per ora. ร solo importante notare per ora che le annotazioni in TestNG sono piรน facili da codificare e comprendere che in JUnit.
La possibilitร di eseguire test in parallelo รจ disponibile in TestNG ma non in JUnit, Quindi la TestNG framework รจ piรน preferito per i tester che utilizzano Selenium Griglia.
Come scrivere casi di test in TestNG?
Passo 1) Scrivi la logica del tuo business e inserisci il file TestNG annotazioni nel codice.
Passo 2) Aggiungi ulteriori informazioni come nome della classe, nome del gruppo, nome del pacchetto, ecc
Passo 3) Corri il TestNG.
Crea caso di test utilizzando TestNG Annotazioni
Ora impareremo come creare il nostro primo caso di test utilizzando TestNG Annotazioni in Selenium:
Prima di creare un caso di test, dovremmo prima impostarne uno nuovo TestNG Proietta dentro Eclipse e chiamarlo "Primo".TestNGProgetto".
Impostare un nuovo TestNG Progetto
Passo 1: Fare clic su File > Nuovo > Java Progetto
Passo 2: Digita "Primo".TestNGProject" come nome del progetto, quindi fare clic su Avanti.
Passo 3: Inizieremo ora a importare il file TestNG Biblioteche sul nostro progetto. Fare clic sulla scheda โLibrerieโ, quindi su โAggiungi libreriaโฆโ
Passo 4: Nella finestra di dialogo Aggiungi libreria, seleziona "TestNG" e fare clic su Avanti.
Passo 5: Fai clic su Fine.
Dovresti notare che TestNG รจ incluso nell'elenco delle biblioteche.
Passo 6: Aggiungeremo ora i file JAR che contengono il file Selenium API. Questi file si trovano in Java driver client da cui abbiamo scaricato https://www.selenium.dev/downloads/ durante l'installazione Selenium e Eclipse nei capitoli precedenti.
Quindi, vai al punto in cui hai posizionato il file Selenium File JAR.
Dopo aver aggiunto i JAR esterni, il tuo schermo dovrebbe assomigliare a questo.
Passo 7: Fare clic su Fine e verificare che il nostro PrimoTestNGIl progetto รจ visibile su Eclipsela finestra Esplora pacchetti di.
Come crearne uno nuovo TestNG File di prova
Ora che abbiamo finito di impostare il nostro progetto in questo TestNG tutorial, creiamone uno nuovo TestNG file.
Passo 1: Fare clic su "src" e scegliere altro.
Fare clic con il tasto destro sulla cartella del pacchetto "src", quindi scegliere Nuovo > Altro...
Passo 2: Seleziona TestNG classe.
Clicca sul TestNG cartella e seleziona "TestNG opzione โclasseโ. Fare clic su Avanti.
Passo 3: Digitare i valori.
Digitare i valori indicati di seguito nelle caselle di input appropriate e fare clic su Fine. Notare che abbiamo denominato il nostro Java file come "PrimoTestNGFile".
Passo 4: Modello creato.
Eclipse dovrebbe creare automaticamente il modello per il nostro TestNG file mostrato di seguito.
Codificazione del nostro primo TestNG Esempio di caso di prova
Creiamo ora il nostro primo Test Case questo controllerร se Mercury La home page di Tours รจ corretta. Digita il tuo codice come mostrato di seguito TestNG Esempio:
package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
public class firsttestngfile {
public String baseUrl = "https://demo.guru99.com/test/newtours/";
String driverPath = "C:\\geckodriver.exe";
public WebDriver driver ;
@Test
public void verifyHomepageTitle() {
System.out.println("launching firefox browser");
System.setProperty("webdriver.gecko.driver", driverPath);
driver = new FirefoxDriver();
driver.get(baseUrl);
String expectedTitle = "Welcome: Mercury Tours";
String actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, expectedTitle);
driver.close();
}
}
Si noti quanto segue.
- TestNG non richiede la presenza di un metodo main().
- I metodi non devono essere statici.
- Abbiamo utilizzato l'annotazione @Test. @Test viene utilizzato per indicare che il metodo sottostante รจ un caso di test. In questo caso, abbiamo impostato il metodo verifyHomepageTitle() come nostro caso di test, quindi abbiamo inserito un'annotazione '@Test' sopra di esso.
- Poichรฉ utilizziamo le annotazioni in TestNG, abbiamo dovuto importare il pacchetto org.testng.annotations.*.
- Abbiamo utilizzato la classe Assert. La classe Assert viene utilizzata per condurre operazioni di verifica in TestNG. Per usarlo dobbiamo importare il pacchetto org.testng.Assert.
Potresti avere piรน casi di test (quindi piรน annotazioni @Test) in uno solo TestNG file. Questo sarร affrontato piรน in dettaglio piรน avanti nella sezione "Annotazioni utilizzate in TestNG. "
Esecuzione del test
Per eseguire il test, esegui semplicemente il file Eclipse come fai normalmente. Eclipse fornirร due output: uno nella finestra della console e l'altro nella finestra della console TestNG Finestra dei risultati.
Controllo dei report creati da TestNG
La finestra della console in Eclipse fornisce un rapporto testuale dei risultati del nostro caso di test mentre il TestNG La finestra dei risultati ce ne fornisce una grafica.
Generazione di report HTML
TestNG ha la capacitร di generare report in formato HTML.
Passo 1: Dopo aver eseguito il nostro primoTestNGFile che abbiamo creato nella sezione precedente, fare clic con il pulsante destro del mouse sul nome del progetto (FirstTestNGProgetto) nella finestra Esplora progetto, quindi fare clic sull'opzione "Aggiorna".
Passo 2: Si noti che รจ stata creata una cartella "test-output". Espandilo e cerca un file index.html. Questo file HTML รจ un report dei risultati dell'esecuzione del test piรน recente.
Passo 3: Double-fai clic sul file index.html per aprirlo all'interno Eclipseil browser web integrato. Puoi aggiornare questa pagina in qualsiasi momento dopo aver eseguito nuovamente il test semplicemente premendo F5 proprio come nei normali browser web.
Annotazioni utilizzate in TestNG
Nella sezione precedente ti รจ stata presentata l'annotazione @Test. Ora studieremo le annotazioni piรน avanzate e il loro utilizzo.
Casi di test multipli
Possiamo utilizzare piรน annotazioni @Test in una singola TestNG file. Per impostazione predefinita, i metodi annotati da @Test vengono eseguiti in ordine alfabetico. Vedi il codice qui sotto. Sebbene i metodi c_test, a_test e b_test non siano disposti in ordine alfabetico nel codice, verranno eseguiti come tali.
Esegui questo codice e nella pagina index.html generata, fai clic su "Visualizzazione cronologica".
Scheda Sintetica
Se si desidera che i metodi vengano eseguiti in un ordine diverso, utilizzare il parametro โprioritร โ. I parametri sono parole chiave che modificano la funzione dell'annotazione.
- I parametri richiedono che tu assegni loro un valore. Puoi farlo posizionando un "=" accanto a loro, quindi seguito dal valore.
- I parametri sono racchiusi tra una coppia di parentesi posizionate subito dopo l'annotazione come lo snippet di codice mostrato di seguito.
TestNG eseguirร l'annotazione @Test con il valore di prioritร piรน basso fino a quello piรน grande. Non รจ necessario che i valori di prioritร siano consecutivi.
Migliori TestNG Il report HTML confermerร che i metodi sono stati eseguiti in base al valore crescente della prioritร .
Parametri multipli
Oltre a "prioritร ", @Test ha un altro parametro chiamato "alwaysRun" che puรฒ essere impostato solo su "true" o "false". Per utilizzare due o piรน parametri in una singola annotazione, separarli con una virgola come quello mostrato di seguito.
@Test(priority = 0, alwaysRun = true)
@BeforeTest e @AfterTest
| @Prima del test | verranno eseguiti i metodi sotto questa annotazione prima del primo caso di prova nel TestNG filetto. |
| @DopoTest | verranno eseguiti i metodi sotto questa annotazione dopo tutti i casi di test in TestNG vengono eseguiti. |
Considera il codice qui sotto.
package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
public class firsttestngfile {
public String baseUrl = "https://demo.guru99.com/test/newtours/";
String driverPath = "C:\\geckodriver.exe";
public WebDriver driver ;
@BeforeTest
public void launchBrowser() {
System.out.println("launching firefox browser");
System.setProperty("webdriver.gecko.driver", driverPath);
driver = new FirefoxDriver();
driver.get(baseUrl);
}
@Test
public void verifyHomepageTitle() {
String expectedTitle = "Welcome: Mercury Tours";
String actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, expectedTitle);
}
@AfterTest
public void terminateBrowser(){
driver.close();
}
}
Applicando la logica presentata dalla tabella e dal codice sopra, possiamo prevedere che la sequenza con cui verranno eseguiti i metodi รจ:
- 1st โ avviaBrowser()
- 2nd โ verificareHomepageTitolo()
- 3rd โ terminaBrowser()
Il posizionamento dei blocchi di annotazione puรฒ essere scambiato senza influenzare l'ordine cronologico in cui verranno eseguiti. Capiamo con a TestNG Esempio e prova a riorganizzare i blocchi di annotazione in modo tale che il tuo codice sia simile a quello seguente.
package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
public class firsttestngfile {
public String baseUrl = "https://demo.guru99.com/test/newtours/";
String driverPath = "C:\\geckodriver.exe";
public WebDriver driver ;
@AfterTest //Jumbled
public void terminateBrowser(){
driver.close();
}
@BeforeTest //Jumbled
public void launchBrowser() {
System.out.println("launching firefox browser");
System.setProperty("webdriver.gecko.driver", driverPath);
driver = new FirefoxDriver();
driver.get(baseUrl);
}
@Test //Jumbled
public void verifyHomepageTitle() {
String expectedTitle = "Welcome: Mercury Tours";
String actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, expectedTitle);
}
}
Esegui il codice sopra e notalo
@BeforeMethod e @AfterMethod
| @PrimaMetodo | verranno eseguiti i metodi sotto questa annotazione prima di ciascun metodo in ciascun caso di test. |
| @DopoMetodo | verranno eseguiti i metodi sotto questa annotazione dopo ciascun metodo in ciascun caso di test. |
In Mercury Tour, supponiamo di voler verificare i titoli delle pagine di destinazione dei due link sottostanti.
Il flusso del nostro test sarebbe:
- Vai alla home page e verificane il titolo.
- Fai clic su REGISTRATI e verifica il titolo della pagina di destinazione.
- Torna alla homepage e verifica se ha ancora il titolo corretto.
- Fai clic su SUPPORTO e verifica il titolo della pagina di destinazione.
- Torna alla homepage e verifica se ha ancora il titolo corretto.
Il codice seguente illustra come vengono utilizzati @BeforeMethod e @AfterMethod per eseguire in modo efficiente lo scenario sopra menzionato.
package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
@Test
public class firsttestngfile {
public String baseUrl = "https://demo.guru99.com/test/newtours/";
String driverPath = "C:\\geckodriver.exe";
public WebDriver driver;
public String expected = null;
public String actual = null;
@BeforeTest
public void launchBrowser() {
System.out.println("launching firefox browser");
System.setProperty("webdriver.gecko.driver", driverPath);
driver= new FirefoxDriver();
driver.get(baseUrl);
}
@BeforeMethod
public void verifyHomepageTitle() {
String expectedTitle = "Welcome: Mercury Tours";
String actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, expectedTitle);
}
@Test(priority = 0)
public void register(){
driver.findElement(By.linkText("REGISTER")).click() ;
expected = "Register: Mercury Tours";
actual = driver.getTitle();
Assert.assertEquals(actual, expected);
}
@Test(priority = 1)
public void support() {
driver.findElement(By.linkText("SUPPORT")).click() ;
expected = "Under Construction: Mercury Tours";
actual = driver.getTitle();
Assert.assertEquals(actual, expected);
}
@AfterMethod
public void goBackToHomepage ( ) {
driver.findElement(By.linkText("Home")).click() ;
}
@AfterTest
public void terminateBrowser(){
driver.close();
}
}
Dopo aver eseguito questo test, il tuo TestNG dovrebbe riportare la seguente sequenza.
In poche parole, @BeforeMethod dovrebbe contenere i metodi che devi eseguire prima ogni caso di test mentre @AfterMethod dovrebbe contenere i metodi che รจ necessario eseguire dopo ogni caso di prova.
Riepilogo delle TestNG Annotazioni
@Prima Suite: il metodo annotato verrร eseguito prima dell'esecuzione di tutti i test in questa suite.
@Aftersuite: il metodo annotato verrร eseguito dopo l'esecuzione di tutti i test in questa suite.
@Prima del test: il metodo annotato verrร eseguito prima dell'esecuzione di qualsiasi metodo di test appartenente alle classi all'interno del tag.
@DopoTest: Il metodo annotato verrร eseguito dopo che tutti i metodi di test appartenenti alle classi all'interno del tag saranno stati eseguiti.
@PrimaGruppi: l'elenco dei gruppi che verranno eseguiti prima da questo metodo di configurazione. L'esecuzione di questo metodo รจ garantita poco prima che venga richiamato il primo metodo di test che appartiene a uno di questi gruppi.
@DopoGruppi: l'elenco dei gruppi dopo i quali verrร eseguito questo metodo di configurazione. L'esecuzione di questo metodo รจ garantita subito dopo il richiamo dell'ultimo metodo di test che appartiene a uno di questi gruppi.
@Prima della lezione: il metodo annotato verrร eseguito prima che venga richiamato il primo metodo di test nella classe corrente.
@Dopo la lezione: il metodo annotato verrร eseguito dopo che sono stati eseguiti tutti i metodi di test nella classe corrente.
@PrimaMetodo: Il metodo annotato verrร eseguito prima di ciascun metodo di test.
@DopoMetodo: il metodo annotato verrร eseguito dopo ciascun metodo di test.
@Test: Il metodo annotato fa parte di un caso di test
Conclusione
- TestNG รจ un analisi quadro che รจ in grado di creare Selenium test piรน facili da comprendere e di generare report di facile comprensione.
- I principali vantaggi di TestNG ancora JUnit sono i seguenti.
- Le annotazioni sono piรน facili da usare e comprendere.
- I casi di test possono essere raggruppati piรน facilmente.
- TestNG ci permette di creare prove parallele.
- La finestra della console in Eclipse genera un risultato basato su testo mentre il TestNG window รจ piรน utile perchรฉ ci fornisce un output grafico del risultato del test piรน altri dettagli significativi come:
- Tempi di esecuzione di ciascun metodo.
- L'ordine cronologico in base al quale i metodi sono stati eseguiti
- TestNG รจ in grado di generare report basati su HTML.
- Le annotazioni possono utilizzare parametri proprio come al solito Java TestNG metodi.
- TestNG Il provider di dati รจ un modo per passare parametri alla funzione di test che trasmette valori diversi nei casi di test in un'unica esecuzione.

































