learn how use testng annotations selenium
TestNG, come molti di voi sanno, è un'automazione quadro ampiamente utilizzato nel selenio . È importante che tutti i tester comprendano le annotazioni utilizzate mentre lavorano con TestNG.
Per dirla semplicemente, le annotazioni TestNG sono righe di codice che vengono inserite nel programma / logica aziendale per controllare come devono essere eseguiti i metodi seguenti.
In questo articolo, mi concentrerò sull'importanza dei diversi tipi di annotazioni e sul loro utilizzo.
Di seguito, ho condiviso la configurazione utilizzata per il mio progetto. Questo non deve essere necessariamente seguito per il tuo progetto.
Le annotazioni differiscono a seconda dei requisiti del progetto. Tuttavia, il flusso di esecuzione sarà lo stesso.
Prerequisiti:
- Installa TestNG in Eclipse. Dai un'occhiata questo tutorial sulla guida all'installazione .
- JDK - Kit di sviluppo Java
- Le annotazioni possono essere utilizzate solo con la versione Java 1.5 o successiva
Prima di scrivere script di test o impostare un progetto, dovremmo conoscere la gerarchia in cui funzionano le annotazioni. L'esecuzione rimarrà sempre la stessa.
Per esempio, compila ed esegui lo script seguente e osserva l'ordine di esecuzione. Sarà il seguente:
- BeforeSuite
- BeforeTest
- Prima della lezione
- BeforeMethod
- Caso di test 1
- AfterMethod
- BeforeMethod
- Caso di test 2
- AfterMethod
- Dopo la lezione
- AfterTest
- AfterSuite
Esempio:
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'); } }
Possiamo interrompere il processo dello script di test nei seguenti passaggi:
- Scrivi la logica di business del tuo test e inseriscila sopra Annotazioni TestNG nel codice
- Aggiungi le informazioni sul tuo test (ad esempio il nome della classe, i gruppi, i metodi che desideri eseguire, ecc.) In un file testng.xml file.
- Esegui TestNG
Ma la domanda rimane ancora: quali informazioni dovremmo fornire nelle annotazioni di cui sopra?
Dai un'occhiata ai passaggi importanti che possiamo ottenere utilizzando le annotazioni precedenti:
# 1) @Test
Questa è la parte principale del nostro script di automazione in cui scriveremo la logica di business, le cose che vogliamo automatizzare. Possiamo passare attributi al nostro metodo di test.
Di seguito sono riportati gli elenchi di attributi che possiamo passare al nostro metodo di test:
- alwaysRun : Viene utilizzato quando vogliamo assicurarci che un metodo venga sempre eseguito anche se i parametri da cui dipende il metodo falliscono. Se impostato su true, questo metodo di test verrà sempre eseguito. Per esempio: @Test (alwaysRun = true)
- dataProvider : TestNG dataProvider viene utilizzato per fornire tutti i dati per la parametrizzazione. Per esempio. @Test (dataProvider = 'Hello').
- dataProviderClass : Questa è la classe da cui passiamo i dati al fornitore di dati. Nel nostro caso il nome della classe dataProvider è 'Hello'.
- dependOnGroups : È l'elenco dei gruppi da cui dipende questo metodo. Per esempio: @Test (gruppi = {'City', 'State'})
- dependOnMethods: Questo comando viene utilizzato per eseguire un metodo basato sul suo metodo dipendente. Per esempio: @Test (dependOnMethods = {'OpenBrowser', 'database is up'})
- descrizione : È la descrizione del metodo. Per esempio: @Test (descrizione = 'metodo di prova')
- invocationCount : Si riferisce al numero di volte in cui un metodo deve essere invocato. Funzionerà come un loop. Per esempio: @Test (invocationCount = 7) . Quindi, questo metodo verrà eseguito 7 volte.
- invocationTimeOut : Si riferisce al numero massimo di millisecondi che un metodo dovrebbe impiegare per completare tutto l'invocationCount. Questo attributo verrà ignorato se invocationCount non è specificato. Per esempio: @Test (invocationCount = 7, invocationTimeOut = 30)
- priorità : Questo comando imposta la priorità del metodo di prova. Le priorità inferiori saranno programmate per prime. Per esempio: @Test (priorità = 1)
#Due)@BeforeSuite e @AfterSuite
Nel @BeforeSuite metodo annotato, è possibile impostare e avviare selenio driver e in @AfterSuite metodo annotato, puoi fermare i driver Selenium
Esempio :
public class TestSuiteSetup () { @BeforeSuite(alwaysRun = true) public void setupSuite() { WebDriver driver = new FirefoxDriver(); } @AfterSuite(alwaysRun = true) public void tearDown() { driver().close(); } }
# 3)@BeforeClass e @AfterClass
Nel @Prima della lezione metodo annotato, puoi impostare le tue proprietà di Firefox, inizializzare il tuo driver e così via @Dopo la lezione metodo annotato, puoi fermare il driver
Esempio :
@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 e @AfterMethod
Nel @BeforeMethod metodo annotato, è possibile controllare la connessione al database prima di eseguire il metodo di prova e in @AfterMethod metodo annotato, è possibile chiudere la connessione al database
Esempio :
@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 e @AfterTest
Nel @BeforTest metodo, puoi impostare le preferenze del tuo profilo Firefox e in @AfterTest metodo, puoi inserire un codice che genererà il risultato del test e inviarlo per posta agli stakeholder
Esempio :
@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'aspetto più importante che dovrebbe essere notato qui mentre si lavora con le annotazioni è che il proprio sistema dovrebbe essere dotato della versione Java 1.5 o successiva, altrimenti Eclipse potrebbe mostrare un errore che le annotazioni non sono supportate sul proprio sistema.
Ora, considera un caso in cui il tuo sistema ha la versione corretta di Java necessaria per le annotazioni ma l'errore appare ancora.
Qualcosa come di seguito:
Errore di sintassi, le annotazioni sono disponibili solo se il livello di origine è 1.5 o superiore.
Cosa farai ora? Ci sono tre opzioni per correggere questa situazione.
Vediamoli uno per uno:
Opzione 1:
- Vai su Eclipse e fai clic con il pulsante destro del mouse sul tuo progetto
- Seleziona Proprietà
- Fare clic su Java Compiler
- Assicurati che il tuo livello di conformità del compilatore sia 1.5 o superiore
- Salva le impostazioni e il tuo problema è risolto
Opzione 2:
- Vai alla scheda Finestra in Eclipse
- Seleziona Preferenze
- Fare clic su Java e quindi su Compilatore
- Assicurati che il tuo livello di conformità del compilatore sia 1.5 o superiore
- Salva le impostazioni e il tuo problema è risolto
Opzione n. 3:
Controlla il tuo Java Home Path impostando la corretta variabile del percorso dell'ambiente Java.
Conclusione:
In questo articolo, abbiamo cercato di discutere alcune delle annotazioni e degli attributi importanti che vengono spesso utilizzati dai tester. Tuttavia, ci sono più annotazioni in TestNG che non vengono usate frequentemente come @AfterGroups, @BeforeGroups e così via che vengono utilizzati quando si lavora con i gruppi nello script di test del progetto.
Quindi usa le annotazioni sopra in base alle tue esigenze. È sempre consigliabile non fare la configurazione del progetto nel metodo di test. Nel metodo di test scrivere la logica aziendale principale che deve essere testata.
facile downloader mp3 download gratuito versione completa
Assicurati che il tuo sistema sia dotato di versioni Java 1.5 o successive, altrimenti Eclipse potrebbe mostrare un errore indicante che le annotazioni non sono supportate sul tuo sistema.
Spero che questo articolo ti aiuti con le annotazioni TestNG. Fateci sapere in caso di commenti o domande.
Lettura consigliata
- Come utilizzare TestNG Framework per la creazione di script di selenio - TestNG Selenium Tutorial # 12
- Selenio Trova elemento per tutorial di testo con esempi
- 30+ Migliori tutorial sul selenio: impara il selenio con esempi reali
- Esercitazione sul selenio di cetriolo: integrazione con WebDriver di selenio Java di cetriolo
- Introduzione a Selenium WebDriver - Selenium Tutorial # 8
- Scripting efficiente del selenio e scenari di risoluzione dei problemi - Tutorial sul selenio n. 27
- Debug degli script di selenio con i registri (tutorial di Log4j) - Esercitazione di selenio # 26
- Tutorial Python DateTime con esempi