Skupiny v TestNG

TestNG je testovacรญ rรกmec, kterรฝ pokrรฝvรก rลฏznรฉ typy nรกvrhลฏ testลฏ, jako jsou jednotkovรฉ, funkฤnรญ, end-to-end, UI a integraฤnรญ testy.

Mลฏลพete spustit jeden nebo vรญce balรญฤkลฏ (balรญฤek zde znamenรก zapouzdล™it skupinu tล™รญd ve sprรกvnรฉm formรกtu adresรกล™e) vytvoล™enรญm XML a jeho spuลกtฤ›nรญm pล™es maven.

TestNG Skupiny s pล™รญkladem

Pouลพรญvรกme skupiny v Testng kdyลพ,

  • Nechceme definovat testovacรญ metody oddฤ›lenฤ› v rลฏznรฝch tล™รญdรกch (v zรกvislosti na funkฤnosti) a
  • Zรกroveลˆ chcete ignorovat (nespouลกtฤ›t) nฤ›kterรฉ testovacรญ pล™รญpady, jako by v kรณdu neexistovaly.
  • Abychom to mohli provรฉst, musรญme je seskupit. To se provรกdรญ pomocรญ mechanismลฏ โ€žzahrnoutโ€œ a โ€žvylouฤitโ€œ podporovanรฉ v testNG.

V pล™รญkladu nรญลพe jsme ukรกzali syntaxi pouลพitรญ skupin v souboru XML.

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

Zde pouลพรญvรกme 2 nรกzvy skupin, tj. โ€žbondingโ€œ a โ€žstrong_tiesโ€œ (toto jsou logickรก jmรฉna, kterรก lze podle vaลกeho pล™รกnรญ zmฤ›nit).

<groups> tag definuje zaฤรกtek skupin v XML.

Pล™izpลฏsobte si XML tak, abyste si vybrali zmรญnฤ›nou skupinu z testovacรญch tล™รญd. Nรญลพe je uvedena syntaxe, jak deklarovat skupiny v souboru XML, napล™

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

Pล™edpoklรกdejme tedy, ลพe ve tล™รญdฤ› je 10 testovacรญch metod.

z nich,

  • 6 metod je oznaฤeno ve skupinฤ› โ€žbondingโ€œ a
  • 4 jsou ve skupinฤ› โ€žstrong_tiesโ€œ.

Vpล™ed, nastavรญme maven/Java cestu a pouลพijte Eclipse IDE k demonstraci pouลพitรญ skupin pomocรญ souborลฏ XML v Java zaloลพenรฝ maven projekt.

Vytvoล™it XML pro TestNG se znaฤkami

  • Soubor XML (Extensible Markup Language) v rรกmci Maven obsahuje informace o jednom nebo vรญce testech a je definovรกn ลกtรญtek.
  • Testovacรญ informace v XML jsou reprezentovรกny ลกtรญtek a mลฏลพe obsahovat jeden nebo vรญce TestNG tล™รญdy.
  • A Java tล™รญda, kterรก obsahuje @Test anotace vรฝลกe testovacรญ metody je definovรกna jako TestNG metody.

Vรญce znaฤek se pouลพรญvรก v sekvenci k vytvoล™enรญ funkฤnรญho xml testNG , a

  • Prvnรญ je tag, kterรฝ obsahuje logickรฝ nรกzev, kterรฝ definuje รบplnรฉ informace pro testNG hlรกลกenรฉ za รบฤelem vygenerovรกnรญ zprรกvy o provedenรญ.
  • Druhรฝ jeGuru โ€ž99 Demo kouล™ovรฉho testuโ€œ>, vลกimnฤ›te si, ลพe se jednรก o logickรฝ nรกzev, kterรฝ obsahuje informace o provedenรญ testu, jako je รบspฤ›ลกnรฝ, neรบspฤ›ลกnรฝ, pล™eskoฤenรฉ testovacรญ pล™รญpady a dalลกรญ informace, jako je celkovรฝ ฤas provedenรญ a informace o skupinฤ›
  • Tล™etรญ jecom.group.guru99.TC_Class1โ€ />, com.group.guru99 je pouลพitรฝ balรญฤek a nรกzev testovacรญ tล™รญdy 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>	

Tento XML budeme pouลพรญvat pro nadchรกzejรญcรญ video uvedenรฉ v sekcรญch nรญลพe.

โ€žexcludeโ€œ nebo โ€žincludeโ€œ v testovacรญm XML

Pล™edpoklรกdejme, ลพe zjistรญte, ลพe pouลพitรญ mechanismu skupiny je sloลพitรฉ, pak testNG XML usnadลˆuje funkci vylouฤenรญ/zahrnutรญ testu.

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

Poznรกmka: Mลฏลพeme zahrnout/vylouฤit vรญce testovacรญch pล™รญpadลฏ najednou, coลพ funguje i se skupinami.

Bฤ›h TestNG Seskupit, zahrnout, vylouฤit kรณd (video ukรกzka)

Vysvฤ›tlenรญ Java Code a XML s seskupit, vylouฤit a zahrnout znaฤku v XML.

Scรฉnรกล™ testu: Zahรกjenรญ Guru99 demo bankovnรญch strรกnek, potรฉ ovฤ›ล™te nฤ›kolik vฤ›cรญ na pล™ihlaลกovacรญ strรกnce, zadejte pล™ihlaลกovacรญ รบdaje a po pล™ihlรกลกenรญ znovu ovฤ›ล™te nฤ›kolik novรฝch vฤ›cรญ v aplikaci.

Bฤ›h TestNG Seskupit, Zahrnout, Vylouฤit Code

Poznรกmka: Kaลพdรฝ krok, kterรฝ kรณdujete, by mฤ›l bรฝt deklarovรกn v samostatnรฝch metodรกch, ale po provedenรญ provede testovacรญ metody v zรกvislosti na poloลพkรกch v souboru XML.

  • Metoda 1: Inicializujte prohlรญลพeฤ a spusลฅte URL (tc01LaunchURL())
  • Metoda 2: Ovฤ›ล™te zรกhlavรญ pล™ihlaลกovacรญ strรกnky (tc02VerifyLaunchPage())
  • Metoda 3: Zadejte uลพivatelskรฉ jmรฉno a heslo do pล™ihlaลกovacรญho formulรกล™e (tc03EnterCredentials())
  • Metoda 4: Ovฤ›ล™te pล™รญtomnost ID sprรกvce na uลพivatelskรฉm panelu (tc04VerifyLoggedInPage())
  • Metoda 5: Ovฤ›ล™te nฤ›kolik dalลกรญch odkazลฏ na User DashBoard (tc05VerifyHyperlinks())

Code pro nรกลก scรฉnรกล™:

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

}	

Poznรกmka: Pล™ihlaลกovacรญ รบdaje jsou platnรฉ pouze 20 dnรญ, takลพe pokud se pokusรญte spustit kรณd na mรญstnรญm poฤรญtaฤi, mลฏลพete ฤelit chybฤ› neplatnรฝch pล™ihlaลกovacรญch รบdajลฏ.

Vysvฤ›tlenรญ Code:

Jak bylo uvedeno vรฝลกe, vytvoล™ili jsme 5 testovacรญch pล™รญpadลฏ pro provedenรญ kaลพdรฉ akce nezรกvislรฝmi metodami.

Pro kaลพdou metodu jsme pล™iล™adili parametr skupiny s nฤ›jakou hodnotou.

V zรกsadฤ› se jednรก o nรกzvy rozliลกujรญcรญch skupin, tj. โ€žsilnรฉ vazbyโ€œ a โ€žspojenรญโ€œ.

  • Prvnรญ a tล™etรญ metoda jsou oznaฤeny jako โ€žbondingโ€œ, โ€žstrong_tiesโ€œ, coลพ znamenรก, ลพe pokud je XML aktualizovรกno v kterรฉkoli skupinฤ›, Testovacรญ pล™รญpad pobฤ›ลพรญ.
  • Druhรก metoda je oznaฤena pouze skupinou โ€žbondingโ€œ, znamenรก to, ลพe pokud je XML aktualizovรกno skupinou bonding. Pouze v takovรฉm pล™รญpadฤ› se spustรญ tento testovacรญ pล™รญpad.
  • ฤŒtvrtรฝ testovacรญ pล™รญpad je oznaฤen jako skupina strong_ties, coลพ znamenรก, ลพe tento testovacรญ pล™รญpad bude spuลกtฤ›n pouze v pล™รญpadฤ›, ลพe je XML aktualizovรกno nรกzvem skupiny strong_ties.
  • Poslednรญ, ale ne nejmรฉnฤ› pรกtรฝ testovacรญ pล™รญpad je pล™ipojen k bonding group, coลพ znamenรก, ลพe tento testovacรญ pล™รญpad bude spuลกtฤ›n pouze v pล™รญpadฤ›, ลพe je XML aktualizovรกno nรกzvem bonding group.

Celkovฤ› tedy mรกme 4 scรฉnรกล™e;

Scรฉnรกล™ 1: Chceme spustit vลกechny testovacรญ pล™รญpady bez ohledu na nรกzev skupiny. V tomto pล™รญpadฤ› odstranรญme znaฤku Group ze spuลกtฤ›nรฉho XML.

Scรฉnรกล™ 2: Chceme provรฉst nฤ›kolik testลฏ, kterรฉ se tรฝkajรญ pouze jednรฉ ze skupin, tj. strong_ties nebo bonding. Viz:

  • V tomto videu je parametr Group komentovรกn ze spuลกtฤ›nรฉho XML. Uvidรญte tedy, ลพe vลกechny testovacรญ pล™รญpady byly provedeny.
  • V pokraฤovรกnรญ videa, nynรญ jsme zahrnuli nรกzev skupiny do XML, mลฏลพete vidฤ›t pouze bฤ›ลพรญcรญ testovacรญ pล™รญpady specifickรฉ pro tuto skupinu.

Scรฉnรกล™ 3: K vylouฤenรญ testovacรญho pล™รญpadu pouลพรญvรกme mechanismus Exclude. Podรญvejte se prosรญm na video

  • Vidรญte, ลพe jsme pouลพili vylouฤit nฤ›kolik testovacรญch pล™รญpadลฏ (tc02) zapsรกnรญm jejich nรกzvu do bฤ›ลพรญcรญho XML. V koneฤnรฉm vรฝsledku uvedenรฉ testovacรญ pล™รญpady neprobฤ›hly.

Scรฉnรกล™ 4: Nakonec pouลพรญvรกme testovacรญ mechanismus zahrnutรญ k zahrnutรญ testovacรญch pล™รญpadลฏ (tc01LaunchURL, tc03EnterCredentials a tc05VerifyHyperlinks). Podรญvejte se prosรญm na video

V tomto videu uvidรญte, ลพe testovacรญ pล™รญpady, kterรฉ jsou uvedeny v XML, bฤ›ลพรญ pouze bฤ›hem provรกdฤ›nรญ testu.

Stรกhnฤ›te si kรณd z kรณdu pro vรฝลกe uvedenรฝ pล™รญklad -

Stรกhnฤ›te si vรฝลกe uvedenรฝ soubor Code

Zรกvฤ›r

Nauฤili jsme se zde relativnฤ› novรฝ zpลฏsob spouลกtฤ›nรญ testovacรญch pล™รญpadลฏ pomocรญ XML v projektu Maven.

Zaฤali jsme krรกtkรฝm รบvodem do testNG a pokraฤovali รบplnou technickou specifikacรญ skupin, vylouฤenรญ a zahrnutรญ.

Shrลˆte tento pล™รญspฤ›vek takto: