Selenio - TestNG

TestNG è un potente framework di test, una versione migliorata di JUnit che era in uso da molto tempo prima che TestNG venisse all'esistenza. NG sta per "Next Generation".

Il framework TestNG fornisce le seguenti funzionalità:

  • Le annotazioni ci aiutano a organizzare facilmente i test.
  • Configurazione flessibile del test.
  • I casi di test possono essere raggruppati più facilmente.
  • La parallelizzazione dei test può essere ottenuta utilizzando TestNG.
  • Supporto per test basati sui dati.
  • Reportistica integrata.

Installazione di TestNG per Eclipse

Step 1 - Avvia Eclipse e seleziona "Installa nuovo software".

Step 2 - Immettere l'URL come "http://beust.com/eclipse" e fare clic su "Aggiungi".

Step 3- Si apre la finestra di dialogo "Aggiungi repository". Immettere il nome come "TestNG" e fare clic su "OK"

Step 4 - Fare clic su "Seleziona tutto" per selezionare "TestNG" come mostrato nella figura.

Step 5 - Fare clic su "Avanti" per continuare.

Step 6 - Rivedi gli elementi selezionati e fai clic su "Avanti".

Step 7 - "Accetta il contratto di licenza" e fai clic su "Fine".

Step 8 - TestNG inizia l'installazione e il progresso verrà mostrato di seguito.

Step 9- Viene visualizzato un avviso di sicurezza quando non è possibile stabilire la validità del software. Fare clic su "Ok".

Step 10- Il programma di installazione richiede di riavviare Eclipse affinché le modifiche abbiano effetto. Fare clic su "Sì".

Annotazioni in TestNG

Le annotazioni sono state aggiunte formalmente al linguaggio Java in JDK 5 e TestNG ha scelto di utilizzare le annotazioni per annotare le classi di test. Di seguito sono riportati alcuni dei vantaggi dell'utilizzo delle annotazioni. Ulteriori informazioni su TestNG possono essere trovatehere

  • TestNG identifica i metodi a cui è interessato cercando le annotazioni. Quindi, i nomi dei metodi non sono limitati a nessun modello o formato.

  • Possiamo passare parametri aggiuntivi alle annotazioni.

  • Le annotazioni sono fortemente tipizzate, quindi il compilatore segnalerà immediatamente eventuali errori.

  • Le classi di test non devono più estendere nulla (come TestCase, per JUnit 3).

Sr.No. Annotazione e descrizione
1

@BeforeSuite

Il metodo annotato verrà eseguito solo una volta prima che tutti i test in questa suite siano stati eseguiti.

2

@AfterSuite

Il metodo annotato verrà eseguito solo una volta dopo che tutti i test in questa suite saranno stati eseguiti.

3

@BeforeClass

Il metodo annotato verrà eseguito solo una volta prima che venga richiamato il primo metodo di test nella classe corrente.

4

@AfterClass

Il metodo annotato verrà eseguito solo una volta dopo che tutti i metodi di test nella classe corrente saranno stati eseguiti.

5

@BeforeTest

Il metodo annotato verrà eseguito prima di eseguire qualsiasi metodo di test appartenente alle classi all'interno del tag <test>.

6

@AfterTest

Il metodo annotato verrà eseguito dopo che tutti i metodi di test appartenenti alle classi all'interno del tag <test> sono stati eseguiti.

7

@BeforeGroups

L'elenco dei gruppi che questo metodo di configurazione eseguirà prima. È garantito che questo metodo venga eseguito poco prima che venga richiamato il primo metodo di prova che appartiene a uno di questi gruppi.

8

@AfterGroups

L'elenco dei gruppi in base ai quali verrà eseguito questo metodo di configurazione. È garantito che questo metodo venga eseguito subito dopo che è stato richiamato l'ultimo metodo di test che appartiene a uno di questi gruppi.

9

@BeforeMethod

Il metodo annotato verrà eseguito prima di ogni metodo di prova.

10

@AfterMethod

Il metodo annotato verrà eseguito dopo ogni metodo di prova.

11

@DataProvider

Contrassegna un metodo come fornitura di dati per un metodo di prova. Il metodo annotato deve restituire un Object [] [] dove a ciascun Object [] può essere assegnato l'elenco dei parametri del metodo di test. Il metodo @Test che desidera ricevere dati da questo DataProvider deve utilizzare un nome dataProvider uguale al nome di questa annotazione.

12

@Factory

Contrassegna un metodo come factory che restituisce oggetti che verranno utilizzati da TestNG come classi Test. Il metodo deve restituire Object [].

13

@Listeners

Definisce i listener in una classe di test.

14

@Parameters

Descrive come passare i parametri a un metodo @Test.

15

@Test

Contrassegna una classe o un metodo come parte del test.

Configurazione TestNG-Eclipse

Step 1 - Avvia Eclipse e crea un "Nuovo progetto Java" come mostrato di seguito.

Step 2 - Immettere il nome del progetto e fare clic su "Avanti".

Step 3 - Vai alla scheda "Librerie" e aggiungi il file JAR Selenium Remote Control Server facendo clic su "Aggiungi JAR esterni" come mostrato di seguito.

Step 4- Il file JAR aggiunto viene mostrato qui. Fare clic su "Aggiungi libreria".

Step 5- Si apre la finestra di dialogo "Aggiungi libreria". Seleziona "TestNG" e fai clic su "Avanti" nella finestra di dialogo "Aggiungi libreria".

Step 6 - La libreria "TestNG" aggiunta viene aggiunta e viene visualizzata come mostrato di seguito.

Step 7 - Al momento della creazione del progetto, la struttura del progetto sarà come mostrato di seguito.

Step 8 - Fare clic con il tasto destro sulla cartella "src" e selezionare Nuovo >> Altro.

Step 9 - Seleziona "TestNG" e fai clic su "Avanti".

Step 10 - Seleziona il nome della "Cartella di origine" e fai clic su "Ok".

Step 11 - Seleziona il "Nome del pacchetto", il "nome della classe" e fai clic su "Fine".

Step 12 - Verranno visualizzati il ​​Package explorer e la classe creata.

Primo test in TestNG

Ora iniziamo a creare script usando TestNG. Facciamo uno script per lo stesso esempio che abbiamo usato per comprendere il WebDriver. Useremo l'applicazione demo, www.calculator.net , ed eseguiremo il calcolo delle percentuali.

Nel seguente test, noterai che NON esiste un metodo principale, poiché testNG guiderà il flusso di esecuzione del programma. Dopo aver inizializzato il driver, eseguirà il metodo "@BeforeTest" seguito da "@Test" e quindi "@AfterTest". Tieni presente che può esserci un numero qualsiasi di annotazioni "@Test" in una classe, ma "@BeforeTest" e "@AfterTest" possono apparire solo una volta.

package TestNG;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;

import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

public class TestNGClass {
   WebDriver driver = new FirefoxDriver();
   
   @BeforeTest
   public void launchapp() {
      // Puts an Implicit wait, Will wait for 10 seconds before throwing exception
      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
      
      // Launch website
      driver.navigate().to("http://www.calculator.net");
      driver.manage().window().maximize();
   }
   
   @Test
   public void calculatepercent() {
      // Click on Math Calculators
      driver.findElement(By.xpath(".//*[@id='menu']/div[3]/a")).click();
      
      // Click on Percent Calculators
      driver.findElement(By.xpath(".//*[@id='menu']/div[4]/div[3]/a")).click();
      
      // Enter value 10 in the first number of the percent Calculator
      driver.findElement(By.id("cpar1")).sendKeys("10");
      
      // Enter value 50 in the second number of the percent Calculator
      driver.findElement(By.id("cpar2")).sendKeys("50");
      
      // Click Calculate Button
      driver.findElement(By.xpath(".//*[@id='content']/table/tbody/tr/td[2]/input")).click();
      
      // Get the Result Text based on its xpath
      String result =
         driver.findElement(By.xpath(".//*[@id='content']/p[2]/span/font/b")).getText();
      
      // Print a Log In message to the screen
      System.out.println(" The Result is " + result);
      
      if(result.equals("5")) {
         System.out.println(" The Result is Pass");
      } else {
         System.out.println(" The Result is Fail");
      }
   }
   
   @AfterTest
   public void terminatetest() {
      driver.close();
   }
}

Esecuzione

Per eseguire, fai clic con il pulsante destro del mouse sull'XML creato e seleziona "Esegui come" >> "TestNG Suite"

Analisi dei risultati

L'output viene lanciato nella console e apparirà come mostrato di seguito. L'output della console ha anche un riepilogo dell'esecuzione.

Il risultato di TestNG può essere visualizzato anche in una scheda diversa. Fare clic sul pulsante "Visualizzazione report HTML" come mostrato di seguito.

Il risultato HTML verrà visualizzato come mostrato di seguito.