TestNG is een testraamwerk dat verschillende soorten testontwerpen omvat, zoals unit-, functionele, end-to-end-, gebruikersinterface- en integratietest.
U kunt een enkele of meerdere pakketten uitvoeren (pakket betekent hier een groep klassen in een juiste director-indeling inkapselen) door XML te maken en deze door maven te laten lopen.
In deze tutorial leer je-
- TestNG-groepen met voorbeeld
- Stel maven en Java-pad in de omgevingsvariabele in (voor Windows-gebruiker)
- Inleiding tot XML en hoe u XML-bestanden kunt maken
- Een ander mechanisme in plaats van groeperen is "uitsluiten" of "opnemen" in test-XML
- Code uitvoeren met XML-bestand (videodemo)
TestNG-groepen met voorbeeld
We gebruiken groepen in Testng wanneer,
- We willen testmethoden niet afzonderlijk definiëren in verschillende klassen (afhankelijk van functionaliteit) en
- Tegelijkertijd willen sommige testgevallen negeren (niet uitvoeren) alsof ze niet in de code voorkomen.
- Dus om dit uit te voeren, moeten we ze groeperen. Dit wordt gedaan met behulp van de mechanismen "include" en "exclude" die worden ondersteund in testNG.
In onderstaand voorbeeld hebben we de syntaxis laten zien van het gebruik van groepen in het XML-bestand.
@Test (groups = {"bonding", "strong_ties"})
Hier gebruiken we 2 groepsnamen, namelijk "bonding" en "strong_ties" (dit zijn logische namen die naar wens kunnen worden gewijzigd).
Pas uw XML aan om de genoemde groep uit de testklassen te kiezen. Hieronder staat de syntaxis voor het declareren van groepen in een XML-bestand, bijvoorbeeld
Laten we dus aannemen dat er 10 testmethoden in een klas zijn.
Van hen,
- 6 methoden zijn gelabeld in "bonding" -groep en
- 4 bevinden zich in de groep "strong_ties"
In de toekomst gaan we het maven / Java-pad instellen en de Eclipse IDE gebruiken om het gebruik van groepen te demonstreren die XML-bestanden gebruiken in een op Java gebaseerd maven-project.
Stel maven en Java-pad in de omgevingsvariabele in (voor Windows-gebruiker)
Raadpleeg https://www.guru99.com/maven-jenkins-with-selenium-complete-tutorial.html
https://www.guru99.com/install-java.html
Inleiding tot XML en hoe u XML-bestanden kunt maken
- XML-bestand (Extensible Markup Language) in Maven-framework bevat de informatie van een of meer tests en wordt gedefinieerd door de tag
. - Testinformatie in XML wordt weergegeven door de tag
en kan een of meer TestNG-klassen bevatten. - Een Java-klasse die @Test- annotatie boven testmethoden bevat, wordt gedefinieerd als TestNG-methoden.
Meerdere tags worden achter elkaar gebruikt om een werkende testNG xml te bouwen, zoals
- De eerste is de tag
, die een logische naam bevat die de volledige informatie definieert die door testNG moet worden gerapporteerd om een uitvoeringsrapport te genereren. - De tweede is
, merk op dat het een logische naam is die de informatie van het testuitvoeringsrapport bevat zoals slagen, mislukken, testcases overslaan en andere informatie zoals totale tijd voor uitvoering en groepsinformatie - De derde is
, com.group.guru99 is het gebruikte pakket en de naam van de Test Class is TC_Class1.
xml version = "1.0" encoding = "UTF-8"?>
We zullen deze XML gebruiken voor aankomende video-nadelen.
Een ander mechanisme in plaats van groeperen is "uitsluiten" of "opnemen" in test-XML
Stel dat u het gebruik van groepsmechanismen complex vindt, dan faciliteert testNG XML de functionaliteit om een test uit te sluiten / op te nemen.
Tag uitsluiten : syntaxis voor tag uitsluitenTag opnemen : syntaxis voor tag opnemen
Opmerking: we kunnen meerdere testcases tegelijk opnemen / uitsluiten, en het werkt ook met groepen.
Code uitvoeren met XML-bestand (videodemo)
Uitleg van de Java-code en XML met de groep, sluit de tag uit en neem deze op in XML.
- Scenario : start de Guru99-demo Banking-site, verifieer enkele dingen op de inlogpagina en voer daarna de inloggegevens in en verifieer enkele nieuwe dingen in de applicatie wanneer u bent ingelogd.
Opmerking : elke stap die u codeert, moet in afzonderlijke methoden worden gedeclareerd, maar wanneer deze wordt uitgevoerd, worden testmethoden uitgevoerd, afhankelijk van de vermeldingen in het XML-bestand.
Methode 1 : browser initialiseren en URL starten (tc01LaunchURL ())
Methode 2 : Controleer de koptekst van de aanmeldingspagina (tc02VerifyLaunchPage ())
Methode 3 : Voer gebruikersnaam en wachtwoord in op inlogformulier (tc03EnterCredentials ())
Methode 4 : Controleer de aanwezigheid van de manager-ID op het gebruikersdashboard (tc04VerifyLoggedInPage ())
Methode 5 : Verifieer nog enkele links op het gebruikersdashboard (tc05VerifyHyperlinks ())
Code voor ons scenario:
pakket com.group.guru99;importeer java.util.concurrent.TimeUnit;import org.openqa.selenium.By;importeer org.openqa.selenium.WebDriver;importeer org.openqa.selenium.firefox.FirefoxDriver;importeer org.testng.Assert;importeer org.testng.annotations.Test;openbare klasse TC_Class1 {openbare statische laatste WebDriver webDriver = nieuwe FirefoxDriver () ;;String launchPageHeading = "// h3 [text () = 'Guru99 Bank']";final String userName_element = "// input [@ name = 'uid']", password_element = "// input [@ name = 'wachtwoord']",signIn_element = "// input [@ name = 'btnLogin']";final String userName_value = "mngr28642", password_value = "ydAnate";final String managerID = "// td [bevat (text (), 'Manager-ID')]";final String newCustomer = "//a[@href='addcustomerpage.php ']", fundTransfer = "//a[@href='FundTransInput.php']";* Deze testcase zal de webDriver initialiseren@Test (groups = {"bonding", "strong_ties"})openbare leegte tc01LaunchURL () {webDriver.manage (). window (). maximaliseren ();webDriver.manage (). timeouts (). implicitlyWait (20, TimeUnit.SECONDS);webDriver.get ("http://www.demo.guru99.com/V4/");* Controleert de aanwezigheid van Heading op de inlogpagina@Test (groups = {"bonding"})openbare ongeldige tc02VerifyLaunchPage () {Assert.assertTrue (webDriver.findElement (By.xpath (launchPageHeading)). IsDisplayed (),"De koptekst van de startpagina wordt niet weergegeven");System.out.println ("Homepaginakop wordt weergegeven");* Deze testcase voert gebruikersnaam en wachtwoord in en klikt vervolgens op* aanmelden knop@Test (groups = {"bonding", "strong_ties"})openbare ongeldige tc03EnterCredentials () {webDriver.findElement (By.xpath (userName_element)). sendKeys (userName_value);webDriver.findElement (By.xpath (wachtwoord_element)). sendKeys (wachtwoord_waarde);webDriver.findElement (By.xpath (signIn_element)). click ();* Deze testcase verifieert de ID-aanwezigheid van de manager op DashBoard@Test (groups = {"strong_ties"})openbare leegte tc04VerifyLoggedInPage () {Assert.assertTrue (webDriver.findElement (By.xpath (managerID)). IsDisplayed (),"Manager-ID-label wordt niet weergegeven");System.out.println ("Manager-ID-label wordt weergegeven");* In deze testcase wordt de aanwezigheid van een nieuwe klantlink gecontroleerd* En FundTransfer-link in het linkerpaneel@Test (groups = {"bonding"})openbare ongeldige tc05VerifyHyperlinks () {Assert.assertTrue (webDriver.findElement (By.xpath (newCustomer)). IsEnabled (),"Nieuwe klant-hyperlink wordt niet weergegeven");System.out.println ("Nieuwe klant-hyperlink wordt weergegeven");Assert.assertTrue (webDriver.findElement (By.xpath (fundTransfer)). IsEnabled (),"Overboekings-hyperlink wordt niet weergegeven");System.out.println ("hyperlink over overboeking wordt weergegeven");
Let op: de inloggegevens zijn slechts 20 dagen geldig, dus als u code probeert uit te voeren op uw lokale computer, kunt u een foutmelding krijgen over ongeldige inloggegevens. Hieronder vindt u de stappen om uw inloggegevens te genereren:
- Start http://www.demo.guru99.com
- Voer uw e-mail-ID in het vak in.
- Klik op enter en bekijk uw inloggegevens op het scherm.
Verklaring van de code:
Zoals hierboven vermeld, hebben we 5 testcases gemaakt voor het uitvoeren van elke actie in onafhankelijke methoden.
Je kunt zien dat we aan elke methode een groepsparameter hebben gekoppeld die een bepaalde waarde bevat.
In feite zijn dit de namen van de onderscheidende groepen, dwz "sterke_heden" en "binding".
- De eerste en derde methoden zijn gelabeld als "bonding", "strong_ties", wat betekent dat als XML in een van de groepen wordt bijgewerkt, deze testcase wordt uitgevoerd.
- De tweede methode is alleen gelabeld als "bonding" -groep, dit betekent dat als XML wordt bijgewerkt met bonding-groep. Alleen in dat geval wordt deze testcase uitgevoerd.
- Vierde testcase is getagd in de strong_ties-groep, wat betekent dat deze testcase alleen wordt uitgevoerd als XML wordt bijgewerkt met de strong_ties-groepsnaam.
- Last but not least vijfde testcase is gekoppeld aan bonding group, wat betekent dat deze testcase alleen wordt uitgevoerd als XML wordt bijgewerkt met bonding group name.
Dus over het algemeen hebben we 4 scenario's;
- We willen alle testcases uitvoeren, ongeacht de groepsnaam. In dit geval zullen we de groepstag verwijderen uit het uitvoeren van XML.
- We willen testcase-tests uitvoeren die alleen betrekking hebben op een van de groepen, dwz strong_ties of bonding
- Raadpleeg:
- In deze video wordt de groepsparameter becommentarieerd door het uitvoeren van XML. Daarom ziet u dat alle testgevallen zijn uitgevoerd.
- In vervolg op video hebben we nu de groepsnaam in XML opgenomen, je kunt alleen testcases zien die specifiek zijn voor die groep die alleen wordt uitgevoerd.
- We gebruiken het uitsluitingsmechanisme om de testcase uit te sluiten:
- Gelieve te verwijzen
- U ziet dat we hebben gebruikt om enkele testgevallen (tc02) uit te sluiten door hun naam in draaiende XML te schrijven. In het uiteindelijke resultaat liepen de genoemde testcases niet.
- Als laatste gebruiken we het include-testmechanisme om de testgevallen op te nemen (tc01LaunchURL, tc03EnterCredentials en tc05VerifyHyperlinks)
- Gelieve te verwijzen
- In deze video zie je dat testcases die in XML genoemd worden alleen draaien tijdens de testuitvoering.
Download de code van de genoemde URL, deze bevat alle soorten testXML:
Download de bovenstaande code
Gevolgtrekking
We hebben hier een relatief nieuwe manier geleerd om testcases uit te voeren met behulp van XML in het Maven-project.
We zijn begonnen met een korte introductie over testNG en gingen verder met de volledige technische specificatie van Groups, exclude en include.