TestNG konzultace
Co je to TestNG?
TestNG je rámec pro testování automatizace, ve kterém NG znamená „Next Generation“. TestNG je inspirován JUnit který používá anotace (@). TestNG překonává nevýhody JUnit a je určen k výrobě end-to-end testování snadné.
Použití TestNG, můžete vygenerovat správnou zprávu a snadno zjistíte, kolik testovacích případů prošlo, selhalo a přeskočilo. Neúspěšné testovací případy můžete spustit samostatně.
Například:
- Předpokládejme, že máte pět testovacích případů, pro každý testovací případ je napsána jedna metoda (Předpokládejme, že program je napsán pomocí hlavní metody bez použití testNG). Při prvním spuštění tohoto programu se úspěšně provedou tři metody a čtvrtá metoda selže. Poté opravte chyby přítomné ve čtvrté metodě, nyní chcete spustit pouze čtvrtou metodu, protože první tři metody jsou stejně úspěšně provedeny. Bez použití to nejde TestNG.
- Jedno TestNG in Selenium poskytuje možnost, tj. soubor testng-failed.xml ve složce test-output. Pokud chcete spustit pouze neúspěšné testovací případy, znamená to, že spustíte tento soubor XML. Provede pouze neúspěšné testovací případy.
Kromě výše uvedeného konceptu se dozvíte více o TestNG, jako jaké jsou výhody TestNG, jak vytvořit testovací metody pomocí anotací @test, jak převést tyto třídy do souboru testovací sady a spouštět je přes eclipse i z příkazové řádky.
Proč používat TestNG s Selenium?
Automaticky Selenium testy negenerují správný formát pro výsledky testů. Použitím TestNG in Selenium, můžeme generovat výsledky testů.
Většina Selenium uživatelé to používají více než Junit kvůli jeho výhodám. Existuje tolik funkcí TestNG, ale zaměříme se pouze na ty nejdůležitější, které můžeme použít Selenium. Níže jsou uvedeny klíčové vlastnosti Selenium TestNG:
- Vygenerujte sestavu ve správném formátu včetně počtu spuštění testovacích případů, počtu úspěšných testovacích případů, počtu neúspěšných testovacích případů a počtu vynechaných testovacích případů.
- Více testovacích případů lze snáze seskupit jejich převedením do souboru testng.xml. Ve kterém můžete stanovit priority, který testovací případ by měl být proveden jako první.
- Stejný testovací případ lze provést vícekrát bez smyček pouze pomocí klíčového slova nazvaného 'počet vyvolání'.
- Pomocí testng můžete spustit více testovacích případů na více prohlížečích, tj. cross testování prohlížeče.
- Jedno TestNG framework lze snadno integrovat s nástroji jako TestNG Maven, Jenkins atd.
- Anotace použité při testování jsou velmi snadno srozumitelné, např.: @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest
- WebDriver nemá žádný nativní mechanismus pro generování sestav. TestNG může vygenerovat zprávu v čitelném formátu, jako je níže uvedený.
- TestNG zjednodušuje způsob kódování testů. V našich testech již není potřeba statická hlavní metoda. Posloupnost akcí je regulována snadno srozumitelnými anotacemi, které nevyžadují, aby byly metody statické.
- Nezachycené výjimky automaticky zpracuje TestNG aniž by byl test předčasně ukončen. Tyto výjimky jsou v sestavě hlášeny jako neúspěšné kroky.
výhody TestNG přes JUnit
Existují tři hlavní výhody TestNG přes JUnit:
- Anotace jsou srozumitelnější
- Testovací případy lze snáze seskupit
- Paralelní testování je možné
V čem je anotace TestNG?
Anotace v TestNG jsou řádky kódu, které mohou řídit, jak bude provedena metoda pod nimi. Před nimi je vždy symbol @. Velmi brzy a rychle TestNG Příklad je ten, který je uveden níže.
Anotace budou diskutovány později v části s názvem „Anotace používané v TestNG“, takže je naprosto v pořádku, pokud výše uvedenému nerozumíte TestNG Zatím jen příklad. V tuto chvíli je důležité poznamenat, že anotace v TestNG jsou snadněji kódovatelné a pochopitelné než v JUnit.
Možnost spouštět testy paralelně je k dispozici v TestNG ale ne v JUnit, Takže TestNG framework je preferovanější pro použití testerů Selenium Mřížka
Jak psát testovací případy v TestNG?
Krok 1) Napište svou obchodní logiku a vložte ji TestNG anotace ve vašem kódu.
Krok 2) Přidejte další informace, jako je název třídy, název skupiny, název balíčku atd
Krok 3) Spusťte TestNG.
Vytvořit testovací případ pomocí TestNG Anotace
Nyní se naučíme, jak vytvořit náš první testovací případ pomocí TestNG Anotace v Selenium:
Než vytvoříme testovací případ, měli bychom nejprve nastavit nový TestNG Projekt v Eclipse a pojmenujte jej jako „PrvníTestNGProjekt".
Nastavení nového TestNG Projekt
Krok 1: Klikněte na Soubor > Nový > Java Projekt
Krok 2: Zadejte „PrvníTestNGProject“ jako Název projektu a poté klikněte na Další.
Krok 3: Nyní začneme importovat TestNG Knihovny do našeho projektu. Klikněte na kartu „Knihovny“ a poté na „Přidat knihovnu…“
Krok 4: V dialogovém okně Přidat knihovnu vyberte „TestNG”A klikněte na Další.
Krok 5: Klikněte na Dokončit.
Měli byste si toho všimnout TestNG je součástí seznamu knihoven.
Krok 6: Nyní přidáme soubory JAR, které obsahují Selenium API. Tyto soubory se nacházejí v Java klientský ovladač, ze kterého jsme stáhli https://www.selenium.dev/downloads/ když jsme instalovali Selenium si Eclipse v předchozích kapitolách.
Poté přejděte na místo, kam jste umístili Selenium soubory JAR.
Po přidání externích JAR by vaše obrazovka měla vypadat takto.
Krok 7: Klikněte na Dokončit a ověřte, že naše PrvníTestNGProjekt je viditelný na Eclipse's okno Průzkumník balíčků.
Jak vytvořit nový TestNG Testovací soubor
Nyní, když jsme dokončili nastavení našeho projektu v tomto TestNG tutoriál, pojďme vytvořit nový TestNG soubor.
Krok 1: Klikněte na 'src' a vyberte jiné.
Klikněte pravým tlačítkem na složku balíčku „src“ a poté vyberte Nový > Jiný…
Krok 2: vybrat TestNG třída.
Klikněte na TestNG složku a vyberte „TestNG třída“. Klepněte na tlačítko Další.
Krok 3: Zadejte hodnoty.
Zadejte níže uvedené hodnoty do příslušných vstupních polí a klikněte na Dokončit. Všimněte si, že jsme pojmenovali naše Java soubor jako „PrvníTestNGSoubor".
Krok 4: Šablona vytvořena.
Eclipse by měl automaticky vytvořit šablonu pro náš TestNG soubor zobrazený níže.
Kódování našeho prvního TestNG Příklad testovacího případu
Pojďme nyní vytvořit náš první Testovací případ to zkontroluje, jestli Mercury Domovská stránka Tours je správná. Zadejte svůj kód, jak je uvedeno níže TestNG Příklad:
package firsttestngpackage; import org.openqa.selenium.*; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.Assert; import org.testng.annotations.*; public class firsttestngfile { public String baseUrl = "https://demo.guru99.com/test/newtours/"; String driverPath = "C:\\geckodriver.exe"; public WebDriver driver ; @Test public void verifyHomepageTitle() { System.out.println("launching firefox browser"); System.setProperty("webdriver.gecko.driver", driverPath); driver = new FirefoxDriver(); driver.get(baseUrl); String expectedTitle = "Welcome: Mercury Tours"; String actualTitle = driver.getTitle(); Assert.assertEquals(actualTitle, expectedTitle); driver.close(); } }
Všimněte si následujícího.
- TestNG nevyžaduje, abyste měli metodu main().
- Metody nemusí být statické.
- Použili jsme anotaci @Test. @Test se používá k označení, že metoda pod ním je testovací případ. V tomto případě jsme nastavili metodu ověřitHomepageTitle() jako náš testovací případ, takže jsme nad ni umístili anotaci '@Test'.
- Protože používáme anotace v TestNG, potřebovali jsme importovat balíček org.testng.annotations.*.
- Použili jsme třídu Assert. Třída Assert se používá k provádění ověřovacích operací v TestNG. Abychom jej mohli použít, musíme importovat balíček org.testng.Assert.
Můžete mít více testovacích případů (tedy více anotací @Test) v jednom TestNG soubor. Tomu se budeme věnovat podrobněji později v části „Poznámky používané v TestNG. "
Spuštění testu
Chcete-li spustit test, jednoduše spusťte soubor Eclipse jako obvykle. Eclipse poskytne dva výstupy – jeden v okně Console a druhý na TestNG Okno výsledků.
Kontrola sestav vytvořených uživatelem TestNG
Okno konzoly v Eclipse poskytuje textovou zprávu o výsledcích našeho testovacího případu, zatímco TestNG Okno výsledků nám poskytuje grafické zobrazení.
Generování HTML zpráv
TestNG má schopnost generovat zprávy ve formátu HTML.
Krok 1: Po spuštění našeho PrvníhoTestNGSoubor, který jsme vytvořili v předchozí části, klikněte pravým tlačítkem na název projektu (FirstTestNGProject) v okně Project Explorer a poté klikněte na možnost „Obnovit“.
Krok 2: Všimněte si, že byla vytvořena složka „test-output“. Rozbalte jej a vyhledejte soubor index.html. Tento soubor HTML je zprávou o výsledcích posledního testu.
Krok 3: Double-kliknutím na tento soubor index.html jej otevřete Eclipsevestavěný webový prohlížeč. Tuto stránku můžete kdykoli po opětovném spuštění testu obnovit pouhým stisknutím klávesy F5 stejně jako v běžných webových prohlížečích.
Anotace používané v TestNG
V předchozí části jste byli seznámeni s anotací @Test. Nyní budeme studovat pokročilejší anotace a jejich použití.
Více testovacích případů
Můžeme použít více anotací @Test v jednom TestNG soubor. Ve výchozím nastavení jsou metody označené @Test prováděny abecedně. Viz kód níže. Přestože metody c_test, a_test a b_test nejsou v kódu uspořádány abecedně, budou jako takové provedeny.
Spusťte tento kód a na vygenerované stránce index.html klikněte na „Chronologické zobrazení“.
parametry
Pokud chcete, aby byly metody prováděny v jiném pořadí, použijte parametr „priorita“. Parametry jsou klíčová slova, která upravují funkci anotace.
- Parametry vyžadují, abyste jim přiřadili hodnotu. Uděláte to tak, že vedle nich umístíte „=“ a poté následuje hodnota.
- Parametry jsou uzavřeny v páru závorek, které jsou umístěny hned za anotací, jako je fragment kódu zobrazený níže.
TestNG provede anotaci @Test s nejnižší prioritou až po největší. Není nutné, aby vaše prioritní hodnoty byly po sobě jdoucí.
Jedno TestNG HTML zpráva potvrdí, že metody byly provedeny na základě vzestupné hodnoty priority.
Více parametrů
Kromě „priority“ má @Test další parametr nazvaný „alwaysRun“, který lze nastavit pouze na hodnotu „true“ nebo „false“. Chcete-li použít dva nebo více parametrů v jedné anotaci, oddělte je čárkou jako je ten, který je zobrazen níže.
@Test(priority = 0, alwaysRun = true)
@BeforeTest a @AfterTest
@Před testem | budou provedeny metody pod touto anotací před prvním testovacím případem v TestNG soubor. |
@Po testu | budou provedeny metody pod touto anotací po všech testovacích případech v TestNG soubor se spustí. |
Zvažte níže uvedený kód.
package firsttestngpackage; import org.openqa.selenium.*; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.Assert; import org.testng.annotations.*; public class firsttestngfile { public String baseUrl = "https://demo.guru99.com/test/newtours/"; String driverPath = "C:\\geckodriver.exe"; public WebDriver driver ; @BeforeTest public void launchBrowser() { System.out.println("launching firefox browser"); System.setProperty("webdriver.gecko.driver", driverPath); driver = new FirefoxDriver(); driver.get(baseUrl); } @Test public void verifyHomepageTitle() { String expectedTitle = "Welcome: Mercury Tours"; String actualTitle = driver.getTitle(); Assert.assertEquals(actualTitle, expectedTitle); } @AfterTest public void terminateBrowser(){ driver.close(); } }
Použitím logiky prezentované tabulkou a výše uvedeným kódem můžeme předpovědět, že sekvence, podle které budou metody prováděny, je:
- 1st – launchBrowser()
- 2nd – ověřitHomepageTitle()
- 3rd – terminalBrowser()
Umístění bloků anotací lze zaměnit, aniž by to ovlivnilo chronologické pořadí, ve kterém budou provedeny. Pojďme si rozumět s a TestNG Příklad a pokuste se přeskupit bloky anotací tak, aby váš kód vypadal podobně jako kód níže.
package firsttestngpackage; import org.openqa.selenium.*; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.Assert; import org.testng.annotations.*; public class firsttestngfile { public String baseUrl = "https://demo.guru99.com/test/newtours/"; String driverPath = "C:\\geckodriver.exe"; public WebDriver driver ; @AfterTest //Jumbled public void terminateBrowser(){ driver.close(); } @BeforeTest //Jumbled public void launchBrowser() { System.out.println("launching firefox browser"); System.setProperty("webdriver.gecko.driver", driverPath); driver = new FirefoxDriver(); driver.get(baseUrl); } @Test //Jumbled public void verifyHomepageTitle() { String expectedTitle = "Welcome: Mercury Tours"; String actualTitle = driver.getTitle(); Assert.assertEquals(actualTitle, expectedTitle); } }
Spusťte výše uvedený kód a všimněte si toho
@BeforeMethod a @AfterMethod
@BeforeMethod | budou provedeny metody pod touto anotací před každou metodou v každém testovacím případě. |
@AfterMethod | budou provedeny metody pod touto anotací po každé metodě v každém testovacím případě. |
In Mercury Prohlídky, předpokládejme, že chceme ověřit názvy cílových stránek dvou níže uvedených odkazů.
Průběh našeho testu by byl:
- Přejděte na domovskou stránku a ověřte její název.
- Klikněte na REGISTROVAT a ověřte název cílové stránky.
- Vraťte se na domovskou stránku a ověřte, zda má stále správný název.
- Klikněte na PODPORA a ověřte název cílové stránky.
- Vraťte se na domovskou stránku a ověřte, zda má stále správný název.
Níže uvedený kód ukazuje, jak se @BeforeMethod a @AfterMethod používají k efektivnímu provedení výše uvedeného scénáře.
package firsttestngpackage; import org.openqa.selenium.*; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.Assert; import org.testng.annotations.*; @Test public class firsttestngfile { public String baseUrl = "https://demo.guru99.com/test/newtours/"; String driverPath = "C:\\geckodriver.exe"; public WebDriver driver; public String expected = null; public String actual = null; @BeforeTest public void launchBrowser() { System.out.println("launching firefox browser"); System.setProperty("webdriver.gecko.driver", driverPath); driver= new FirefoxDriver(); driver.get(baseUrl); } @BeforeMethod public void verifyHomepageTitle() { String expectedTitle = "Welcome: Mercury Tours"; String actualTitle = driver.getTitle(); Assert.assertEquals(actualTitle, expectedTitle); } @Test(priority = 0) public void register(){ driver.findElement(By.linkText("REGISTER")).click() ; expected = "Register: Mercury Tours"; actual = driver.getTitle(); Assert.assertEquals(actual, expected); } @Test(priority = 1) public void support() { driver.findElement(By.linkText("SUPPORT")).click() ; expected = "Under Construction: Mercury Tours"; actual = driver.getTitle(); Assert.assertEquals(actual, expected); } @AfterMethod public void goBackToHomepage ( ) { driver.findElement(By.linkText("Home")).click() ; } @AfterTest public void terminateBrowser(){ driver.close(); } }
Po provedení tohoto testu váš TestNG by měl hlásit následující sekvenci.
Jednoduše řečeno, @BeforeMethod by měl obsahovat metody, které musíte spustit před každý testovací případ, zatímco @AfterMethod by měl obsahovat metody, které musíte spustit po každý testovací případ.
Shrnutí TestNG Anotace
@BeforeSuite: Metoda s poznámkami bude spuštěna před spuštěním všech testů v této sadě.
@AfterSuite: Metoda s poznámkami bude spuštěna po provedení všech testů v této sadě.
@Před testem: Anotovaná metoda bude spuštěna před spuštěním jakékoli testovací metody patřící do tříd uvnitř značky.
@Po testu: Metoda s poznámkami bude spuštěna po spuštění všech testovacích metod patřících do tříd uvnitř značky.
@BeforeGroups: Seznam skupin, před kterými bude tato metoda konfigurace spuštěna. Tato metoda se zaručeně spustí krátce před vyvoláním první testovací metody, která patří do kterékoli z těchto skupin.
@AfterGroups: Seznam skupin, po kterých bude tato metoda konfigurace spuštěna. Tato metoda se zaručeně spustí krátce po vyvolání poslední testovací metody, která patří do kterékoli z těchto skupin.
@Před hodinou: Anotovaná metoda bude spuštěna před vyvoláním první testovací metody v aktuální třídě.
@Po hodině: Metoda s poznámkami bude spuštěna po spuštění všech testovacích metod v aktuální třídě.
@BeforeMethod: Před každou testovací metodou bude spuštěna anotovaná metoda.
@AfterMethod: Metoda s poznámkami bude spuštěna po každé testovací metodě.
@Test: Metoda s poznámkami je součástí testovacího případu
Proč investovat do čističky vzduchu?
- TestNG je Testování rámec, který je schopen vytvořit Selenium srozumitelnější testy a generování přehledů, které jsou snadno srozumitelné.
- Hlavní výhody TestNG přes JUnit jsou následující.
- Anotace jsou snadněji použitelné a pochopitelné.
- Testovací případy lze snáze seskupit.
- TestNG nám umožňuje tvořit paralelní testy.
- Okno konzoly v Eclipse generuje textový výsledek, zatímco TestNG okno je užitečnější, protože nám poskytuje grafický výstup výsledku testu plus další smysluplné detaily, jako například:
- Doba běhu každé metody.
- Chronologické pořadí, ve kterém byly metody prováděny
- TestNG je schopen generovat zprávy založené na HTML.
- Anotace mohou používat parametry jako obvykle Java TestNG metody.
- TestNG Dataprovider je způsob, jak předávat parametry do testovací funkce, která předává různé hodnoty v testovacích případech v jediném provedení.