learn how use testng annotations selenium
TestNG, după cum știți majoritatea dintre voi, este o automatizare cadru utilizat pe scară largă în seleniu . Este important pentru toți testerii să înțeleagă adnotările folosite în timp ce lucrează cu TestNG.
Mai simplu spus, adnotările TestNG sunt linii de cod care sunt inserate în logica programului / afacerii pentru a controla modul în care trebuie rulate metodele de mai jos.
În acest articol, mă voi concentra asupra importanței diferitelor tipuri de adnotări și a utilizării acestora.
Mai jos, am împărtășit setul utilizat pentru proiectul meu. Acest lucru nu trebuie neapărat urmat pentru proiectul dvs.
Adnotările diferă în funcție de cerințele proiectului. Cu toate acestea, fluxul de execuție va fi același.
Condiții preliminare:
- Instalați TestNG în Eclipse. Verifica acest tutorial despre ghidul de instalare .
- JDK - Kit de dezvoltare Java
- Adnotările pot fi utilizate numai cu versiunea Java 1.5 sau mai recentă
Înainte de a scrie scripturi de testare sau de a înființa un proiect, ar trebui să cunoaștem ierarhia în care funcționează adnotările. Execuția va rămâne întotdeauna aceeași.
De exemplu, compilați și rulați scriptul de mai jos și observați ordinea de execuție. Va fi după cum urmează:
- BeforeSuite
- BeforeTest
- Înainte de curs
- Înainte de metodă
- Testul 1
- AfterMethod
- Înainte de metodă
- Testul 2
- AfterMethod
- După clasa
- AfterTest
- AfterSuite
Exemplu:
public class test { @BeforeMethod public void beforeMethod() { System.out.println(' Before Method will execute before every test method'); } @AfterMethod public void afterMethod() { System.out.println('After Method will execute after every test method '); } @BeforeClass public void beforeClass() { System.out.println('Before Class will always execute prior to Before Method and Test Method '); } @AfterClass public void afterClass() { System.out.println('After Class will always execute later to After Method and Test method'); } @BeforeTest public void beforeTest() { System.out.println('Before Test will always execute prior to Before Class, ,Before Method and Test Method '); } @AfterTest public void afterTest() { System.out.println('After Test will always execute later to After Method, After Class '); } @BeforeSuite public void beforeSuite() { System.out.println(“Before Suite will always execute prior to all annotations or tests in the suite.'); } @AfterSuite public void afterSuite() { System.out.println('After suite will always execute at last when all the annotations or test in the suite have run.'); } @Test public void testCase1() { System.out.println('This is my First Test Case 1'); } @Test public void testCase2() { System.out.println('This is my Second Test Case 2'); } }
Putem descompune procesul scriptului de testare în pașii de mai jos:
- Scrieți logica de afaceri a testului și introduceți mai sus Adnotări TestNG în codul tău
- Adăugați informații despre testul dvs. (de exemplu, numele clasei, grupurile, metodele pe care doriți să le rulați etc.) într-un testng.xml fişier.
- Rulați TestNG
Dar întrebarea rămâne în continuare - ce informații ar trebui să oferim în adnotările de mai sus?
Aruncați o privire la pașii importanți pe care îi putem realiza folosind adnotările de mai sus:
# 1) @Test
Aceasta este partea principală a scriptului nostru de automatizare în care vom scrie logica de afaceri, lucrurile pe care dorim să le automatizăm. Putem trece atribute metodei noastre de testare.
Mai jos sunt listele de atribute pe care le putem transmite metodei noastre de testare:
- întotdeauna aleargă : Acesta este utilizat atunci când vrem să ne asigurăm că o metodă rulează întotdeauna chiar dacă parametrii de care depinde metoda nu reușesc. Dacă este setată la adevărat, această metodă de testare va rula întotdeauna. De exemplu: @Test (alwaysRun = true)
- dataProvider : TestNG dataProvider este utilizat pentru a furniza orice date pentru parametrizare. De exemplu. @Test (dataProvider = „Bună ziua”).
- dataProviderClass : Aceasta este clasa de unde transmitem datele către furnizorul de date. În cazul nostru, numele clasei dataProvider este „Bună ziua”.
- depinde de grupuri : Este lista grupurilor de care depinde această metodă. De exemplu: @Test (grupuri = {„Oraș”, „Stat”})
- depinde de metode: Această comandă este utilizată pentru a executa o metodă bazată pe metoda sa dependentă. De exemplu: @Test (depindeOnMetodele = {„OpenBrowser”, „baza de date este activată”})
- Descriere : Este descrierea metodei. De exemplu: @Test (descriere = „metodă de testare”)
- invocationCount : Se referă la numărul de ori în care ar trebui invocată o metodă. Va funcționa ca o buclă. De exemplu: @Test (invocationCount = 7) . Prin urmare, această metodă se va executa de 7 ori.
- invocationTimeOut : Aceasta se referă la numărul maxim de milisecunde pe care ar trebui să o ia o metodă pentru ca toată invocarea să fie finalizată. Acest atribut va fi ignorat dacă invocationCount nu este specificat. De exemplu: @Test (invocationCount = 7, invocationTimeOut = 30)
- prioritate : Această comandă stabilește prioritatea metodei de testare. Prioritățile mai mici vor fi programate mai întâi. De exemplu: @Test (prioritate = 1)
#Două)@BeforeSuite și @AfterSuite
În @BeforeSuite metodă adnotată, puteți configura și porni seleniu șoferi și în @AfterSuite metoda adnotată, puteți opri driverele Selenium
Exemplu :
public class TestSuiteSetup () { @BeforeSuite(alwaysRun = true) public void setupSuite() { WebDriver driver = new FirefoxDriver(); } @AfterSuite(alwaysRun = true) public void tearDown() { driver().close(); } }
# 3)@BeforeClass și @AfterClass
În @Înainte de curs metoda adnotată, puteți configura proprietățile firefox, inițializa driverul și așa mai departe și în @După clasa metoda adnotată, puteți opri driverul
Exemplu :
@BeforeClass(description = 'Set capabilities for your Firefox browser and set time it should wait for a page to load.') public static void firefoxSetUp() throws MalformedURLException { DesiredCapabilities capability = DesiredCapabilities.firefox(); driver = new FirefoxDriver(capability); driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); driver.manage().window().setSize(new Dimension(1920, 1080)); } @AfterClass(description = 'close your firefox driver') public void afterclass(){ driver.close(); }
# 4)@BeforeMethod și @AfterMethod
În @BeforeMethod metoda adnotată, puteți verifica conexiunea la baza de date înainte de a executa metoda de testare și în @AfterMethod metoda adnotată, puteți închide conexiunea bazei de date
Exemplu :
@BeforeMethod(description='connect to database') public void beforemethod() throws SQLException{ //check database connection is up String databaseurl = 'jdbc:oracle://192.168.1.258/myDB'; DriverManager.getConnection(databaseurl, 'username', 'password'); }
@AfterMethod(description='close database connection') public void aftermethod() throws SQLException{ //check database connection is closed String databaseurl = 'jdbc:oracle://192.168.1.258/myDB'; Connection connect = DriverManager.getConnection(databaseurl, 'username', 'password'); if(connect!=null) connect.close(); }
# 5)@BeforeTest și @AfterTest
În @BeforTest metoda, puteți seta preferințele profilului firefox și în @AfterTest metoda, puteți pune un cod care va genera rezultatul testului și îl puteți trimite prin e-mail părților interesate
Exemplu :
@BeforeTest (description='set your firefox profile preferences according to your project requirement') public void single_run(){ FirefoxProfile firefoxProfile = new FirefoxProfile(); firefoxProfile.setPreference ('browser.download.folderList',2); firefoxProfile.setPreference ('browser.download.manager.showWhenStarting',false); firefoxProfile.setPreference ('browser.download.dir','E:\reports\'); firefoxProfile.setPreference ('browser.helperApps.neverAsk.saveToDisk','csv'); driver = new FirefoxDriver(firefoxProfile); String baseUrl = 'www.gmail.com'; } @AfterTest (description='') public void teardown(){ //a code which will send the test details report }
Cel mai important aspect care trebuie remarcat aici în timp ce lucrați cu adnotări este că sistemul dvs. ar trebui să fie echipat cu versiunea Java 1.5 sau mai mare, altfel Eclipse ar putea arăta o eroare că adnotările nu sunt acceptate în sistemul dvs.
Acum, luați în considerare un caz în care sistemul dvs. are versiunea corectă de Java necesară adnotărilor, dar eroarea apare în continuare.
Ceva ca mai jos:
Eroare de sintaxă, adnotările sunt disponibile numai dacă nivelul sursei este de 1,5 sau mai mare.
Ce vei face acum? Sunt trei opțiuni pentru a remedia această situație.
Să o parcurgem una câte una:
Opțiunea 1:
- Accesați Eclipse și faceți clic dreapta pe proiectul dvs.
- Selectați Proprietăți
- Faceți clic pe Java Compiler
- Asigurați-vă că nivelul de conformitate al compilatorului este de 1,5 sau mai mare
- Salvați setările și problema dvs. este rezolvată
Opțiunea # 2:
- Accesați fila Window în Eclipse
- Selectați Preferințe
- Faceți clic pe Java și apoi pe Compiler
- Asigurați-vă că nivelul de conformitate al compilatorului este de 1,5 sau mai mare
- Salvați setările și problema dvs. este rezolvată
Opțiunea # 3:
Verificați calea Java Home setând variabila corectă a căii de mediu Java.
Concluzie:
Prin acest articol, am încercat să discutăm câteva dintre adnotările și atributele importante care sunt frecvent utilizate de testeri. Cu toate acestea, există mai multe adnotări în TestNG care nu sunt utilizate frecvent, cum ar fi @AfterGroups, @BeforeGroups și așa mai departe, care sunt utilizate atunci când lucrați cu grupuri în scriptul de testare a proiectului.
Așadar, utilizați adnotările de mai sus în funcție de cerințele dvs. Este întotdeauna recomandabil să nu efectuați configurarea proiectului în metoda de testare. În metoda de test, scrieți logica de bază a activității care urmează să fie testată.
care este cel mai bun server de e-mail
Asigurați-vă că sistemul dvs. este echipat cu versiunile Java 1.5 sau mai mari, altfel Eclipse ar putea afișa o eroare că adnotările nu sunt acceptate în sistemul dvs.
Sper că acest articol vă va ajuta cu adnotările TestNG. Vă rugăm să ne anunțați în cazul oricăror comentarii sau întrebări.
Lectură recomandată
- Cum se folosește TestNG Framework pentru crearea de scripturi Selenium - TestNG Selenium Tutorial # 12
- Tutorial Selenium Find Element By Text cu exemple
- 30+ Cele mai bune tutoriale despre seleniu: învățați seleniul cu exemple reale
- Tutorial Castravete Seleniu: Integrare Castravete Java Seleniu WebDriver
- Introducere în Selenium WebDriver - Tutorial Selenium # 8
- Scenarii eficiente cu scripturi și depanare Selenium - Tutorial Selenium # 27
- Depanarea scripturilor Selenium cu jurnale (Tutorial Log4j) - Tutorial Selenium # 26
- Tutorial Python DateTime cu exemple