Grupuri de testare – Includeți și excludeți (exemplu)

TestNG este un cadru de testare care acoperă diferite tipuri de design de testare, cum ar fi testele unitare, funcționale, end-to-end, UI și de integrare.

Puteți rula pachete unice sau multiple (pachetul aici înseamnă să încapsulați un grup de clase într-un format de director adecvat) creând XML și rulându-l prin maven.

TestNG Grupuri cu Exemplu

Folosim grupuri în Testng cand,

  • Nu dorim să definim metode de testare separat în diferite clase (în funcție de funcționalitate) și
  • În același timp, doriți să ignorați (nu să executați) unele cazuri de testare ca și cum nu ar exista în cod.
  • Deci, pentru a realiza acest lucru, trebuie să îi grupăm. Acest lucru se face prin utilizarea mecanismelor „include” și „exclude” acceptate în testNG.

În exemplul de mai jos, am arătat sintaxa modului de utilizare a grupurilor în fișierul XML.

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

Aici folosim 2 nume de grup, adică „bonding” și „strong_links” (acestea sunt numele logice care pot fi modificate după dorința dvs.).

<groups> tag definește începutul grupurilor în XML.

Personalizați XML-ul pentru a alege grupul menționat din clasele de testare. Mai jos este menționată sintaxa modului de declarare a grupurilor într-un fișier XML, de ex

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

Deci, să presupunem că există 10 metode de testare într-o clasă.

Din ei,

  • 6 metode sunt etichetate în grupul „legare” și
  • 4 sunt în grupul „strong_links”.

Mergând înainte, vom stabili Maven/Java calea și folosiți Eclipse IDE pentru a demonstra utilizarea grupurilor care utilizează fișiere XML în Java proiectul Maven bazat.

Creați XML pentru TestNG Cu etichete

  • Fișierul XML (Extensible Markup Language) din cadrul Maven conține informațiile unuia sau mai multor teste și este definit de etichetă.
  • Informațiile de testare în XML sunt reprezentate de etichetă și poate conține unul sau mai multe TestNG clase.
  • A Java clasa care contine @Test adnotarea de mai sus metodele de testare este definită ca TestNG metode.

Mai multe etichete sunt folosite într-o secvență pentru a construi un testNG xml care funcționează , și

  • Primul este tag, care deține un nume logic care definește informații complete pentru testNG raportate pentru a genera raportul de execuție.
  • Al doilea este , rețineți că este un nume logic care conține informațiile raportului de execuție a testului, cum ar fi trecerea, eșuarea, ignorarea cazurilor de testare și alte informații precum timpul total de execuție și informațiile grupului
  • Al treilea estecom.group.guru99.TC_Class1” />, com.group.guru99 este pachetul folosit, iar numele clasei de testare este 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>	

Vom folosi acest XML pentru următorul videoclip prezentat în secțiunile de mai jos.

„exclude” sau „include” în XML de testare

Să presupunem că găsiți un complex de utilizare a mecanismului de grup, apoi testNG XML facilitează funcționalitatea de a exclude/include un test.

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

Notă: Putem include/exclude mai multe cazuri de testare odată, ceea ce funcționează și cu Grupuri.

Alerga TestNG Grupați, includeți, excludeți codul (demo video)

Explicație a Java Cod și XML cu grupați, excludeți și includeți eticheta în XML.

Scenariu de testare: Lansați site-ul demo Guru99 Banking, verificați câteva lucruri pe pagina de conectare după aceea, introduceți acreditările și verificați din nou câteva lucruri noi în aplicație atunci când sunteți autentificat.

Alerga TestNG Grupați, Includeți, Excludeți codul

Notă: Fiecare pas pe care îl codificați ar trebui declarat în metode separate, dar atunci când este executat, acesta va executa metode de testare în funcție de intrările din fișierul XML.

  • Metoda 1: Inițializați browserul și lansați adresa URL (tc01LaunchURL())
  • Metoda 2: Verificați titlul paginii de conectare (tc02VerifyLaunchPage())
  • Metoda 3: Introduceți numele de utilizator și parola în formularul de conectare (tc03EnterCredentials())
  • Metoda 4: Verificați prezența ID-ului de manager în Tabloul de bord utilizator (tc04VerifyLoggedInPage())
  • Metoda 5: Verificați mai multe link-uri pe User Dashboard (tc05VerifyHyperlinks())

Cod pentru scenariul nostru:

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");	
    }	

}	

Vă rugăm să rețineți: acreditările sunt valabile doar 20 de zile, așa că dacă încercați să rulați cod pe computerul dvs. local, este posibil să vă confruntați cu o eroare de acreditări nevalide.

Explicația codului:

După cum am menționat mai sus, am creat 5 cazuri de testare pentru efectuarea fiecărei acțiuni în metode independente.

Pentru fiecare metodă, am asociat un parametru de grup cu o anumită valoare.

Practic, acestea sunt numele grupurilor de diferențiere și anume „strong_links” și „bonding”.

  • Primele și a treia metode sunt etichetate la „bonding”, „strong_ties”, ceea ce înseamnă că dacă XML este actualizat în oricare din grup, aceasta Caz de testare va alerga.
  • A doua metodă este etichetată doar la grupul „legare”, înseamnă că dacă XML este actualizat cu grupul de legare. Numai în acest caz se va rula acest caz de testare.
  • Al patrulea caz de testare este etichetat la grupul strong_ties, ceea ce înseamnă că acest caz de testare va rula numai dacă XML este actualizat cu numele grupului strong_ties.
  • Ultimul, dar nu în ultimul rând, al cincilea caz de testare este atașat grupului de legături, ceea ce înseamnă că acest caz de testare va rula numai dacă XML este actualizat cu numele grupului de legături.

Deci, per total, avem 4 scenarii;

Scenariul 1: Dorim să rulăm toate cazurile de testare, indiferent de numele grupului. În acest caz, vom elimina eticheta de grup din rularea XML.

Scenariul 2: Vrem să rulăm câteva teste care sunt legate doar de oricare dintre grupuri, adică strong_ties sau bonding. Vă rugăm să consultați:

  • În acest videoclip, parametrul de grup este comentat din rularea XML. Prin urmare, veți vedea că toate cazurile de testare au fost executate.
  • În continuarea videoclipului, acum am inclus numele grupului în XML, puteți vedea doar cazurile de testare specifice acelui grup care rulează.

Scenariul 3: Folosim mecanismul de excludere pentru a exclude cazul de testare. Vă rugăm să consultați videoclipul

  • Vedeți că am folosit exclude câteva cazuri de testare (tc02) scriind numele lor în rularea XML. În rezultatul final, cazurile de testare menționate nu au rulat.

Scenariul 4: În sfârșit, folosim mecanismul de testare include pentru a include cazurile de testare (tc01LaunchURL, tc03EnterCredentials și tc05VerifyHyperlinks). Vă rugăm să consultați videoclipul

În acest videoclip, veți vedea că cazurile de testare care sunt menționate în XML rulează doar în timpul execuției testului.

Vă rugăm să descărcați codul din codul pentru exemplul de mai sus -

Descărcați codul de mai sus

Concluzie

Am învățat aici un mod relativ nou de a rula cazuri de testare folosind XML în proiectul Maven.

Am început prin a oferi o scurtă introducere în testNG și am continuat cu specificațiile tehnice complete ale Grupurilor, excluderea și includerea.