Grupe u TestNG

TestNG je okvir za testiranje koji pokriva različite vrste dizajna testova kao što su jedinični, funkcionalni, end-to-end testovi, UI i integracijski testovi.

Možete pokrenuti jedan ili više paketa (paket ovdje znači enkapsulirati grupu klasa u odgovarajućem formatu direktorija) stvaranjem XML-a i njegovim pokretanjem kroz maven.

TestNG Grupe s primjerom

Koristimo grupe u Testng kada,

  • Ne želimo zasebno definirati metode ispitivanja u različitim klasama (ovisno o funkcionalnosti) i
  • U isto vrijeme želite ignorirati (ne izvršiti) neke testne slučajeve kao da ne postoje u kodu.
  • Da bismo ovo izveli, moramo ih grupirati. To se postiže pomoću mehanizama "uključi" i "isključi" podržanih u testNG-u.

U donjem primjeru pokazali smo sintaksu korištenja grupa u XML datoteci.

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

Ovdje koristimo 2 naziva grupa, tj. “bonding” i “strong_ties” (ovo su logični nazivi koji se mogu mijenjati prema vašoj želji).

<groups> oznaka definira početak grupa u XML-u.

Prilagodite svoj XML kako biste odabrali spomenutu grupu iz ispitnih klasa. Dolje je navedena sintaksa kako deklarirati grupe u XML datoteci, npr

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

Dakle, pretpostavimo da postoji 10 ispitnih metoda u klasi.

Od njih,

  • 6 metoda je označeno u grupi "vezivanja" i
  • 4 su u skupini "snažne veze".

Idemo naprijed, postavit ćemo maven/Java put i koristiti Eclipse IDE za demonstraciju upotrebe grupa pomoću XML datoteka u Java temeljen maven projekt.

Stvorite XML za TestNG s oznakama

  • XML (Extensible Markup Language) datoteka u okviru Maven sadrži informacije jednog ili više testova i definirana je označiti.
  • Testne informacije u XML-u predstavljene su sa označiti a može sadržavati jedan ili više TestNG klase.
  • A Java klasa koja sadrži @Test anotacija iznad ispitnih metoda definirana je kao TestNG metode.

Višestruke oznake koriste se u slijedu za izradu radnog testNG xml-a , i

  • Prvo je oznaku, koja sadrži logično ime koje definira punu informaciju za testNG prijavljenu za generiranje izvješća o izvršenju.
  • Drugo je , imajte na umu da je to logično ime koje sadrži informacije o izvješću o izvršenju testa kao što su prolaznost, neuspjeh, preskakanje testnih slučajeva i druge informacije kao što je ukupno vrijeme za izvršenje i informacije o grupi
  • Treće jecom.group.guru99.TC_Class1” />, com.group.guru99 je paket koji se koristi, a naziv testne klase je 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>	

Koristit ćemo ovaj XML za nadolazeći video dat u odjeljcima ispod.

"isključi" ili "uključi" u testni XML

Pretpostavimo da smatrate da je uporaba grupnog mehanizma složena, a zatim testNG XML olakšava funkcionalnost isključivanja/uključivanja testa.

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

Bilješka: Možemo uključiti/isključiti više testnih slučajeva odjednom, što također funkcionira s Grupama.

trčanje TestNG Grupiraj, uključi, isključi kod (video demo)

Objašnjenje za Java Kod i XML s grupirati, isključiti i uključiti oznaku u XML-u.

Testni scenarij: Pokrenite Guru99 demo bankarsku stranicu, nakon toga provjerite nekoliko stvari na stranici za prijavu, unesite vjerodajnice i ponovno provjerite nekoliko novih stvari u aplikaciji kada ste prijavljeni.

trčanje TestNG Grupiraj, uključi, isključi kod

Bilješka: Svaki korak koji kodirate trebao bi biti deklariran u zasebnim metodama, ali kada se izvrši, izvršit će testne metode ovisno o unosima u XML datoteci.

  • Metoda 1: Inicijalizirajte preglednik i pokrenite URL (tc01LaunchURL())
  • Metoda 2: Provjerite naslov stranice za prijavu (tc02VerifyLaunchPage())
  • Metoda 3: Unesite korisničko ime i lozinku na obrazac za prijavu (tc03EnterCredentials())
  • Metoda 4: Provjerite prisutnost ID-a upravitelja na korisničkoj nadzornoj ploči (tc04VerifyLoggedInPage())
  • Metoda 5: Provjerite još nekoliko veza na korisničkoj nadzornoj ploči (tc05VerifyHyperlinks())

Kod za naš scenarij:

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("https://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");	
    }	

}	

Imajte na umu: vjerodajnice vrijede samo 20 dana, pa ako pokušate pokrenuti kod na svom lokalnom računalu, mogli biste se suočiti s pogreškom nevažećih vjerodajnica.

Objašnjenje koda:

Kao što je gore spomenuto, stvorili smo 5 testnih slučajeva za izvođenje svake akcije u neovisnim metodama.

Za svaku metodu smo pridružili parametar grupe s nekom vrijednošću.

Uglavnom, ovo su nazivi skupina koje se razlikuju, tj. "jake_veze" i "veze".

  • Prva i treća metoda označene su kao "bonding", "strong_ties", što znači da ako se XML ažurira u bilo kojoj skupini, ovaj Testni slučaj će trčati.
  • Druga metoda označena je samo grupom za povezivanje, to znači da ako je XML ažuriran grupom za povezivanje. Samo u tom slučaju ovaj test će se pokrenuti.
  • Četvrti testni slučaj označen je grupom strong_ties, što znači da će se ovaj testni slučaj pokrenuti samo ako se XML ažurira s nazivom grupe strong_ties.
  • Posljednji, ali ne i najmanje važan, peti testni slučaj pridružen je grupi za povezivanje, što znači da će se ovaj testni slučaj pokrenuti samo ako se XML ažurira s nazivom grupe za povezivanje.

Sve u svemu, imamo 4 scenarija;

Scenarij 1: Želimo pokrenuti sve testne slučajeve bez obzira na naziv grupe. U ovom slučaju ćemo ukloniti oznaku grupe iz pokretanja XML-a.

Scenarij 2: Želimo provesti nekoliko testova koji su povezani samo s bilo kojom od grupa, tj. jake veze ili povezanost. Molimo obratite se:

  • U ovom videu, parametar grupe je komentiran iz pokretanja XML-a. Dakle, vidjet ćete da su svi testni slučajevi izvršeni.
  • U nastavku videa, sada smo uključili naziv grupe u XML, možete vidjeti samo testne slučajeve specifične za tu grupu koja se izvodi.

Scenarij 3: Za isključivanje testnog slučaja koristimo mehanizam za isključivanje. Pogledajte video

  • Vidite da smo upotrijebili isključivanje nekoliko testnih slučajeva (tc02) pisanjem njihovog imena u pokrenuti XML. U konačnom rezultatu, spomenuti test slučajevi nisu pokrenuti.

Scenarij 4: Na kraju, koristimo mehanizam za uključivanje testa za uključivanje testnih slučajeva (tc01LaunchURL, tc03EnterCredentials i tc05VerifyHyperlinks). Pogledajte video

U ovom videu vidjet ćete da se testni slučajevi koji se spominju u XML-u izvode samo tijekom izvođenja testa.

Preuzmite kôd iz koda za gornji primjer-

Preuzmite gornji kod

Zaključak

Ovdje smo naučili relativno nov način pokretanja testnih slučajeva koristeći XML u projektu Maven.

Započeli smo pružanjem kratkog uvoda u testNG i nastavili s potpunom tehničkom specifikacijom grupa, isključivanja i uključivanja.

Sažmite ovu objavu uz: