Gruppi di test – Includi ed escludi (esempio)

TestNG è un framework di test che copre diversi tipi di progetti di test come test unitari, funzionali, end-to-end, dell'interfaccia utente e di integrazione.

È possibile eseguire pacchetti singoli o multipli (pacchetto qui significa incapsulare un gruppo di classi in un formato di direttore appropriato) creando XML ed eseguendolo tramite maven.

TestNG Gruppi con esempio

Usiamo i gruppi in Test quando,

  • Non vogliamo definire metodi di test separatamente in classi diverse (a seconda della funzionalità) e
  • Allo stesso tempo voglio ignorare (non eseguire) alcuni casi di test come se non esistessero nel codice.
  • Quindi per realizzare ciò dobbiamo raggrupparli. Questo viene fatto utilizzando i meccanismi di “inclusione” ed “esclusione” supportati in testNG.

Nell'esempio seguente, abbiamo mostrato la sintassi di come utilizzare i gruppi nel file XML.

@Test (groups = { "bonding", "strong_ties" })

Qui stiamo usando 2 nomi di gruppo, ovvero "bonding" e "strong_ties" (questi sono i nomi logici che possono essere modificati secondo i tuoi desideri).

<groups> il tag definisce l'inizio dei gruppi in XML.

Personalizza il tuo XML per scegliere il gruppo menzionato dalle classi di test. Di seguito è menzionata la sintassi di come dichiarare i gruppi in un file XML, ad es

 <groups>		
   <run>		
    <include name="bonding" />		
   </run>		
  </groups>		

Supponiamo quindi che in una classe siano presenti 10 metodi di test.

fuori di loro,

  • I metodi 6 sono taggati nel gruppo "legame" e
  • 4 sono nel gruppo “legami_forti”.

Andando avanti, imposteremo maven/Java percorso e utilizzare il file Eclipse IDE per dimostrare l'utilizzo dei gruppi utilizzando file XML in Java progetto Maven basato.

Crea XML per TestNG con le etichette

  • Il file XML (Extensible Markup Language) nel framework Maven contiene le informazioni di uno o più test ed è definito dal etichetta.
  • Le informazioni sul test in XML sono rappresentate da etichetta e può contenerne uno o più TestNG classi.
  • A Java classe che contiene @Test l'annotazione sopra i metodi di prova è definita come TestNG metodi.

Più tag vengono utilizzati in sequenza per creare un file xml testNG funzionante , E

  • Il primo è tag, che contiene un nome logico che definisce le informazioni complete a testNG riportate per generare il report di esecuzione.
  • Il secondo è , nota che è il nome logico che contiene le informazioni del report di esecuzione del test come superato, fallito, salta i casi di test e altre informazioni come il tempo totale per l'esecuzione e le informazioni sul gruppo
  • Il terzo ècom.group.guru99.TC_Class1” />, com.group.guru99 è il pacchetto utilizzato e il nome della classe di test è TC_Class1.
<?xml version="1.0" encoding="UTF-8" ?>	
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">	
 	<suite name="Suite">	
		<test name="Guru 99 Smoke Test Demo">	
			<groups>	
				<run>	
   					 <include name="strong_ties" />	
        		</run>	
       		</groups>	
			<classes>	
					<class name="com.group.guru99.TC_Class1" />	
           	</classes>	
		</test>	
  </suite>	

Utilizzeremo questo XML per il prossimo video riportato nelle sezioni seguenti.

"escludere" o "includere" nell'XML di prova

Supponiamo che l'utilizzo del meccanismo di gruppo risulti complesso; in tal caso, testNG XML semplifica la funzionalità per escludere/includere un test.

Exclude Tag:  Syntax for exclude tag <exclude name="${TEST_CASE_NAME}" />
Include Tag:  Syntax for include tag <include name="${TEST_CASE_NAME}" />

Nota: Possiamo includere/escludere più casi di test una volta alla volta, il che funziona anche con i gruppi.

Correre TestNG Raggruppa, includi, escludi codice (video demo)

Spiegazione di Java Codice e XML con il file raggruppare, escludere e includere il tag in XML.

Scenario di prova: Avvia il sito demo bancario di Guru99, verifica successivamente alcune cose nella pagina di accesso, inserisci le credenziali e verifica nuovamente alcune cose nuove sull'applicazione una volta effettuato l'accesso.

Correre TestNG Raggruppa, Includi, Escludi codice

Nota: Ogni passaggio codificato deve essere dichiarato in metodi separati, ma una volta eseguito, eseguirà metodi di test in base alle voci nel file XML.

  • Metodo 1: Inizializza il browser e avvia l'URL (tc01LaunchURL())
  • Metodo 2: Verifica intestazione pagina di accesso (tc02VerifyLaunchPage())
  • Metodo 3: Inserisci nome utente e password nel modulo di accesso (tc03EnterCredentials())
  • Metodo 4: Verifica la presenza dell'ID gestore sulla dashboard utente (tc04VerifyLoggedInPage())
  • Metodo 5: Verifica alcuni altri collegamenti sulla DashBoard utente (tc05VerifyHyperlinks())

Codice per il nostro scenario:

package com.group.guru99;	

import java.util.concurrent.TimeUnit;	

import org.openqa.selenium.By;	
import org.openqa.selenium.WebDriver;	
import org.openqa.selenium.firefox.FirefoxDriver;	
import org.testng.Assert;	
import org.testng.annotations.Test;	

public class TC_Class1 {	
    public static final WebDriver webDriver = new FirefoxDriver();;	

    String launchPageHeading = "//h3[text()='Guru99 Bank']";	
    final String userName_element = "//input[@name='uid']", password_element = "//input[@name='password']",	
            signIn_element = "//input[@name='btnLogin']";	
    final String userName_value = "mngr28642", password_value = "ydAnate";	
    final String managerID = "//td[contains(text(),'Manger Id')]";	
    final String newCustomer = "//a[@href='addcustomerpage.php']", fundTransfer = "//a[@href='FundTransInput.php']";	

    /**	
     * This test case will initialize the webDriver	
     */	
    @Test(groups = { "bonding", "strong_ties" })	
    public void tc01LaunchURL() {	
        webDriver.manage().window().maximize();	
        webDriver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);	
        webDriver.get("http://www.demo.guru99.com/V4/");	
    }	

    /**	
     * Will check the presence of Heading on Login Page	
     */	
    @Test(groups = { "bonding" })	
    public void tc02VerifyLaunchPage() {	
        Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(),	
                "Home Page heading is not displayed");	
        System.out.println("Home Page heading is displayed");	
    }	

    /**	
     * This test case will enter User name, password and will then click on	
     * signIn button	
     */	
    @Test(groups = { "bonding", "strong_ties" })	
    public void tc03EnterCredentials() {	
        webDriver.findElement(By.xpath(userName_element)).sendKeys(userName_value);	
        webDriver.findElement(By.xpath(password_element)).sendKeys(password_value);	
        webDriver.findElement(By.xpath(signIn_element)).click();	
    }	

    /**	
     * This test case will verify manger's ID presence on DashBoard	
     */	
    @Test(groups = { "strong_ties" })	
    public void tc04VerifyLoggedInPage() {	
        Assert.assertTrue(webDriver.findElement(By.xpath(managerID)).isDisplayed(),	
                "Manager ID label is not displayed");	
        System.out.println("Manger Id label is displayed");	
    }	

    /**	
     * This test case will check the presence of presence of New customer link	
     * And FundTransfer link in Left pannel	
     */	
    @Test(groups = { "bonding" })	
    public void tc05VerifyHyperlinks() {	
        Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(),	
                "New customer hyperlink is not displayed");	
        System.out.println("New customer hyperlink is displayed");	

        Assert.assertTrue(webDriver.findElement(By.xpath(fundTransfer)).isEnabled(),	
                "Fund Transfer hyperlink is not displayed");	
        System.out.println("Fund Transfer hyperlink is displayed");	
    }	

}	

Nota: le credenziali sono valide solo per 20 giorni, quindi se provi a eseguire il codice sul tuo computer locale, potresti riscontrare un errore di credenziali non valide.

Spiegazione del codice:

Come accennato in precedenza, abbiamo creato 5 casi di test per eseguire ciascuna azione con metodi indipendenti.

Per ogni metodo, abbiamo associato un parametro di gruppo con un valore.

Fondamentalmente questi sono i nomi dei gruppi di differenziazione, ovvero “legami_forti” e “legame”.

  • Il primo e il terzo metodo sono contrassegnati con "bonding", "strong_ties", il che significa che se XML viene aggiornato in uno qualsiasi dei gruppi, questo Test Case correrà.
  • Il secondo metodo è contrassegnato solo dal gruppo "bonding", significa che se XML viene aggiornato con il gruppo bonding. Solo in questo caso verrà eseguito il test case.
  • Il quarto test case è contrassegnato dal gruppo strong_ties, il che significa che questo test case verrà eseguito solo se XML viene aggiornato con il nome del gruppo strong_ties.
  • Ultimo ma non meno importante, il quinto caso di test è collegato al gruppo di collegamento, il che significa che questo caso di test verrà eseguito solo se XML viene aggiornato con il nome del gruppo di collegamento.

Quindi, nel complesso, abbiamo 4 scenari;

Scenario 1: Vogliamo eseguire tutti i casi di test indipendentemente dal nome del gruppo. In questo caso, rimuoveremo il tag Group dall'esecuzione di XML.

Scenario 2: Vogliamo eseguire alcuni test relativi solo a uno dei gruppi, ad esempio legami forti o legame. Per favore, riferisci:

  • In questo video, il parametro Group viene commentato dall'esecuzione di XML. Quindi, vedrai che tutti i casi di test sono stati eseguiti.
  • Nella continuazione del video, ora abbiamo incluso il nome del gruppo in XML, puoi vedere solo i casi di test specifici per quel gruppo in esecuzione.

Scenario 3: Stiamo utilizzando il meccanismo di esclusione per escludere il caso di test. Si prega di fare riferimento al video

  • Vedi che abbiamo utilizzato l'esclusione di alcuni casi di test (tc02) scrivendo il loro nome nell'XML in esecuzione. Nel risultato finale, i casi di test menzionati non sono stati eseguiti.

Scenario 4: Infine, utilizziamo il meccanismo di test di inclusione per includere i casi di test (tc01LaunchURL, tc03EnterCredentials e tc05VerifyHyperlinks). Si prega di fare riferimento al video

In questo video vedrai che i casi di test menzionati in XML vengono eseguiti solo durante l'esecuzione del test.

Si prega di scaricare il codice dal codice per l'esempio sopra-

Scarica il codice sopra

Conclusione

Abbiamo imparato qui un modo relativamente nuovo di eseguire casi di test utilizzando XML nel progetto Maven.

Abbiamo iniziato fornendo una breve introduzione a testNG e abbiamo continuato con le specifiche tecniche complete di Gruppi, Escludi e Includi.