learn how use testng annotations selenium
TestNG, com la majoria de vostès saben, és una automatització marc àmpliament utilitzat al seleni . És important que tots els verificadors comprenguin les anotacions utilitzades mentre treballen amb TestNG.
En poques paraules, les anotacions TestNG són línies de codi que s’insereixen a la lògica del programa / negoci per controlar com s’executaran els mètodes següents.
En aquest article, em centraré en la importància dels diferents tipus d’anotacions i el seu ús.
A continuació, he compartit la configuració utilitzada per al meu projecte. Això no necessàriament s'ha de seguir per al vostre projecte.
Les anotacions varien segons els requisits del vostre projecte. No obstant això, el flux d'execució serà el mateix.
Requisits previs:
- Instal·leu TestNG a Eclipse. Comprovar aquest tutorial sobre la guia d'instal·lació .
- JDK - Kit de desenvolupament de Java
- Les anotacions només es poden utilitzar amb la versió Java 1.5 o superior
Abans d’escriure scripts de prova o configurar un projecte, hem de conèixer la jerarquia en què funcionen les anotacions. L'execució sempre serà la mateixa.
Per exemple, compileu i executeu el següent script i observeu l'ordre d'execució. Serà el següent:
- BeforeSuite
- BeforeTest
- BeforeClass
- Abans del mètode
- Cas de prova 1
- AfterMethod
- Abans del mètode
- Cas de prova 2
- AfterMethod
- Després de classe
- AfterTest
- AfterSuite
Exemple:
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'); } }
Podem trencar el procés de seqüència d'ordres de prova en els passos següents:
- Escriviu la lògica empresarial de la prova i inseriu-la a la part superior Anotacions TestNG al vostre codi
- Afegiu la informació sobre la prova (per exemple, el nom de la classe, els grups, els mètodes que voleu executar, etc.) a testng.xml dossier.
- Executeu TestNG
Però encara queda la pregunta: quina informació hauríem de proporcionar a les anotacions anteriors?
Feu un cop d'ull als passos importants que podem fer mitjançant les anotacions anteriors:
# 1) @Prova
Aquesta és la part principal del nostre script d’automatització on escriurem la lògica empresarial, les coses que volem automatitzar. Podem passar atributs al nostre mètode de prova.
A continuació es mostren les llistes d’atributs que podem passar al nostre mètode de prova:
- sempreCorre : S'utilitza quan volem assegurar-nos que sempre s'executa un mètode, fins i tot si fallen els paràmetres dels quals depèn el mètode. Si s'estableix en true, aquest mètode de prova sempre s'executarà. Per exemple: @Test (alwaysRun = true)
- dataProvider : TestNG dataProvider s’utilitza per proporcionar qualsevol dada per a la parametrització. Per exemple. @Test (dataProvider = 'Hola').
- dataProviderClass : Aquesta és la classe des d'on passem les dades al proveïdor de dades. En el nostre cas, el nom de la classe dataProvider és 'Hola'.
- dependsOnGroups : És la llista de grups dels quals depèn aquest mètode. Per exemple: @Test (grups = {'Ciutat', 'Estat'})
- dependsOnMethods: Aquesta ordre s'utilitza per executar un mètode basat en el seu mètode dependent. Per exemple: @Test (DependsOnMethods = {'OpenBrowser', 'la base de dades està activada'})
- descripció : És la descripció del mètode. Per exemple: @Test (descripció = 'mètode de prova')
- invocationCount : Es refereix al nombre de vegades que s’ha d’invocar un mètode. Funcionarà com un bucle. Per exemple: @Test (invocationCount = 7) . Per tant, aquest mètode s’executarà 7 vegades.
- invocationTimeOut : Es refereix al nombre màxim de mil·lisegons que hauria de prendre un mètode perquè es completi tot el nombre d’invocacions. Aquest atribut s'ignorarà si no s'especifica invocationCount. Per exemple: @Test (invocationCount = 7, invocationTimeOut = 30)
- prioritat : Aquesta ordre estableix la prioritat del mètode de prova. Primer es programaran prioritats més baixes. Per exemple: @Test (prioritat = 1)
# 2)@BeforeSuite i @AfterSuite
En @BeforeSuite mètode anotat, podeu configurar i iniciar seleni conductors i en @AfterSuite mètode anotat, podeu aturar els controladors de Selenium
Exemple :
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
En @BeforeClass mètode anotat, podeu configurar les propietats de Firefox, inicialitzar el controlador, etc. @Després de classe mètode anotat, podeu aturar el controlador
Exemple :
@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
En @BeforeMethod mètode anotat, podeu comprovar la connexió de la base de dades abans d’executar el mètode de prova i a @AfterMethod mètode anotat, podeu tancar la connexió de la vostra base de dades
Exemple :
@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
En @BeforTest mètode, podeu configurar les preferències del vostre perfil de Firefox i a @AfterTest mètode, podeu posar un codi que generarà el resultat de la prova i enviar-lo per correu als interessats
Exemple :
@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 }
L'aspecte més important que s'hauria de tenir en compte aquí mentre es treballa amb anotacions és que el vostre sistema hauria d'estar equipat amb la versió Java 1.5 o superior, en cas contrari, Eclipse podria mostrar un error perquè les anotacions no són compatibles amb el vostre sistema.
Ara, penseu en un cas en què el vostre sistema tingui la versió correcta de Java necessària per a les anotacions, però l’error encara apareix.
Alguna cosa com a continuació:
Error de sintaxi, les anotacions només estan disponibles si el nivell d'origen és 1,5 o superior.
Què faràs ara? N’hi ha tres opcions per corregir aquesta situació.
Anem a revisar-ho un per un:
Opció 1:
- Aneu a Eclipse i feu clic amb el botó dret al vostre projecte
- Seleccioneu Propietats
- Feu clic a Java Compiler
- Assegureu-vos que el nivell de compliment del compilador sigui 1,5 o superior
- Deseu la configuració i el vostre problema s'ha resolt
Opció 2:
- Aneu a la pestanya Finestra d'Eclipse
- Seleccioneu Preferències
- Feu clic a Java i després a Compilador
- Assegureu-vos que el nivell de compliment del compilador sigui 1,5 o superior
- Deseu la configuració i el vostre problema s'ha resolt
Opció 3:
Comproveu el vostre camí d'accés Java establint la variable de camí d'accés d'entorn Java correcta.
Conclusió:
A través d'aquest article, hem intentat discutir algunes de les anotacions i atributs importants que solen utilitzar els verificadors. Tot i això, hi ha més anotacions a TestNG que no s’utilitzen amb freqüència, com ara @AfterGroups, @BeforeGroups i així successivament, que s'utilitzen quan esteu treballant amb grups al vostre script de prova del projecte.
Utilitzeu les anotacions anteriors segons els vostres requisits. Sempre és recomanable no fer la configuració del vostre projecte en el mètode de prova. En el mètode de prova, escriviu la lògica principal del negoci que s'ha de provar.
millor optimitzador de sistema per a Windows 10
Assegureu-vos que el vostre sistema estigui equipat amb versions de Java 1.5 o posteriors; en cas contrari, Eclipse pot mostrar un error en què no es poden fer anotacions al vostre sistema.
Espero que aquest article us ajudi amb les anotacions TestNG. Si us plau, feu-nos-ho saber si teniu cap comentari o pregunta.
Lectura recomanada
- Com s'utilitza el marc TestNG per crear scripts de Selenium - Tutorial # 12 de TestNG Selenium
- Tutorial Selenium Find Element By Text amb exemples
- 30+ millors tutorials sobre seleni: apreneu el seleni amb exemples reals
- Tutorial de Cogombre Selenium: Integració de Cogombre Java Selenium WebDriver
- Introducció a Selenium WebDriver - Tutorial Selenium # 8
- Escenaris de scripts i resolució de problemes de Selenium eficients: tutorial núm. 27 de Selenium
- Depuració d’escriptures de Selenium amb registres (Tutorial Log4j) - Tutorial Selenium núm. 26
- Tutorial de Python DateTime amb exemples