TestNG @Testausprioriteetti sisään Selenium

TestNG on Testaus puitekehys, joka kattaa erityyppiset testimallit, kuten yksikkötestin, toimintatestin, päästä päähän -testin, käyttöliittymätestin ja integraatiotestin.

Voit suorittaa yhden tai useita testitapauksia Testng koodi.

Jos testin prioriteettia ei ole määritetty, kun suoritetaan useita testitapauksia, TestNG määrittää kaikille @Test-prioriteettiksi nolla(0).

Nyt juosten; alemmat prioriteetit ajoitetaan ensin.

Esittely TestNG koodi ilman prioriteettia

Otetaan skenaario, jossa sekvensointi vaaditaan kaikkien testitapausten läpäisemiseksi:

Skenaario: Luo koodi, jossa sinun on suoritettava Google hae tietyllä hakusanalla, kuten ”Facebook”. Varmista nyt, että selaimen otsikko on muuttunut muotoon ”Facebook – Google Haku".

Huomautus: Jokaisen koodattavan vaiheen tulee olla eri menetelmissä

Menetelmä 1: Avaa selain sano Firefox (openBrowser())

Menetelmä 2: Käynnistä Google.com (käynnistysGoogle())

Menetelmä 3: Suorita haku käyttämällä Facebookia (performSearchAndClick1stLink())

Menetelmä 4Vahvista Google hakusivun otsikko (FaceBookPageTitleVerification())

Code meidän skenaariossamme:

import org.openqa.selenium.By;			
import org.openqa.selenium.WebDriver;			
import org.openqa.selenium.firefox.FirefoxDriver;			
import org.testng.Assert;			
import org.testng.annotations.Test;			

public class Priority_In_testNG {		
    WebDriver driver;			

	    // Method 1: Open Brower say Firefox			
	    @Test		
	    public void openBrowser() {				
	        driver = new FirefoxDriver();				
	    }		

	    // Method 2: Launch Google.com			
	    @Test		
	    public void launchGoogle() {				
	        driver.get("http://www.google.co.in");						
	    }		
        
	    // Method 3: Perform a search using "Facebook"			
	    @Test		
	    public void peformSeachAndClick1stLink() {				
	        driver.findElement(By.xpath(".//*[@title='Search']")).sendKeys("Facebook");								
	    }		

	    // Method 4: Verify Google search page title.			
	    @Test		
	    public void FaceBookPageTitleVerification() throws Exception {				
	        driver.findElement(By.xpath(".//*[@value='Search']")).click();						
	        Thread.sleep(3000);		
	        Assert.assertEquals(driver.getTitle().contains("Facebook - Google Search"), true);				
	    }		
	}		

Selitys Code

Kuten edellä mainittiin, olemme luoneet 4 testitapausta kunkin toiminnon suorittamiseksi itsenäisissä menetelmissä.

  • Ensimmäinen menetelmä (openBrowser) alustetaan Firefox selain.
  • Toinen menetelmä (käynnistääGoogle) valtiot, jotka käynnistävät Google.com on alustetussa selaimessa.
  • Kolmas menetelmä (peformSeachAndClick1stLink)tilat, jotka suorittavat haun hakukentässä (xpath (.//*[@title='Haku']) hakusanalla as Facebook ja
  • Neljäs ja viimeinen menetelmä (FaceBookPageTitleVerification) osavaltiot, jotka napsauttavat hakukuvaketta Google ja varmista, että selaimen otsikko on muutettu muotoon Facebook - Google Hae.

Suorita nyt tämä koodi käyttämällä testNG:tä videon osoittamalla tavalla, löydät kaikki Testitapaus epäonnistuvat. Epäonnistumisen syy: koska edellisen testitapauksen läpäiseminen on riippuvainen, vain nykyinen käynnissä oleva testitapaus hyväksytään.

Tässä tapauksessa,

  • Ensimmäinen suoritettava menetelmä on openBrowser(). Se meni läpi, koska sillä ei ole riippuvuutta.
  • Toinen suoritettu menetelmä on FaceBookPageTitleVerification(); se epäonnistuu, koska yritämme napsauttaa hakupainiketta ja vahvistaa selaimen otsikon.
  • Voit nähdä, että jos hakutoimintaa ei käsitellä, miten mikä tahansa muu vaihe voidaan ohittaa. Tästä syystä testitapaukseni epäonnistuvat.
PASSED: openBrowser
FAILED: FaceBookPageTitleVerification
FAILED: launchGoogle
FAILED: peformSeachAndClick1stLink

Esittely TestNG koodi ilman prioriteettia aakkosjärjestyksessä

Jos emme mainitse mitään prioriteettia, testng suorittaa @Test-menetelmät niiden menetelmänimien aakkosjärjestyksessä riippumatta niiden toteutuspaikasta koodissa.

package com.guru.testngannotations;

import org.testng.annotations.Test;

public class TestNG_Priority_Annotations {

@Test
public void c_method(){
System.out.println("I'm in method C");
}
@Test
public void b_method(){
System.out.println("I'm in method B");
}
@Test
public void a_method(){
System.out.println("I'm in method A");
}
@Test
public void e_method(){
System.out.println("I'm in method E");
}
@Test
public void d_method(){
System.out.println("I'm in method D");
}

}

ulostulo

I'm in method A 
I'm in method B 
I'm in method C 
I'm in method D 
I'm in method E 

Vaikka määritimme menetelmät satunnaisesti (c, b, a, e, d), testng suoritti menetelmät niiden metodinimien perusteella aakkosjärjestystä harkiten ja sama heijastui myös ulostulokseen.

Kuinka asettaa prioriteetti TestNG

Kuten olet nähnyt edellisessä esimerkissä, että tämän skenaarion läpimeno edellyttää sekvensointia, joten muokkaamme edellistä koodinpätkää Prioriteettiparametri niin, että jokaisen testin tulee olla niille määritettyä prioriteettia vastaan.

Kuten nyt näet, olemme määrittäneet Priority-arvon jokaiselle testitapaukselle, mikä tarkoittaa, että testitapaus suoritetaan ensin alhaisemman prioriteetin arvolla.

Prioriteetti testNG:ssä toiminnassa

import org.openqa.selenium.By;			
import org.openqa.selenium.WebDriver;			
import org.openqa.selenium.firefox.FirefoxDriver;			
import org.testng.Assert;			
import org.testng.annotations.Test;			

public class Priority_In_testNG {		
    WebDriver driver;			

    // Method 1: Open Browser say Firefox			
    @Test (priority=1)		
    public void openBrowser() {				
        driver = new FirefoxDriver();				
    }		

    // Method 2: Launch Google.com			
    @Test (priority=2)		
    public void launchGoogle() {				
        driver.get("http://www.google.co.in");						
    }		

    // Method 3: Perform a search using "Facebook"			
    @Test (priority=3)		
    public void peformSeachAndClick1stLink() {				
        driver.findElement(By.xpath(".//*[@title='Search']")).sendKeys("Facebook");								
    }		

    // Method 4: Verify Google search page title.			
    @Test (priority=4)		
    public void FaceBookPageTitleVerification() throws Exception {				
        driver.findElement(By.xpath(".//*[@value='Search']")).click();						
        Thread.sleep(3000);		
        Assert.assertEquals(driver.getTitle().contains("Facebook - Google Search"), true);				
    }		
}

Selitys Code

Kun olet määrittänyt prioriteetin jokaiselle testitapaukselle, suorita yllä oleva koodi käyttämällä testNG:tä alla mainitussa Video-2:ssa esitetyllä tavalla.

Täällä voit nähdä, että testitapaukset on priorisoitu. Alhaisemman prioriteetin testitapaukset suoritetaan ensin eli nyt testitapauksissa suoritetaan peräkkäinen suoritus prioriteetin mukaan. Siksi kaikki testitapaukset ovat nyt läpäisseet.

Huomaa eclipse-konsoli:

ulostulo :

PASSED: openBrowser
PASSED: launchGoogle
PASSED: peformSearchAndClick1stLink
PASSED: FaceBookPageTitleVerification

Numerolla 0 on korkein prioriteetti (se suoritetaan ensin) ja prioriteetti jatkuu annetun luvun perusteella, eli 0:lla on korkein prioriteetti kuin 1. 1:llä on korkein prioriteetti kuin 2 ja niin edelleen.

package com.guru.testngannotations;
import org.testng.annotations.Test;

public class TestNG_Priority_Annotations {

    @Test(priority=6)
    public void c_method(){
    System.out.println("I'm in method C");
    }
    @Test(priority=9)
    public void b_method(){
    System.out.println("I'm in method B");
    }
    @Test(priority=1)
    public void a_method(){
    System.out.println("I'm in method A");
    }
    @Test(priority=0)
    public void e_method(){
    System.out.println("I'm in method E");
    }
    @Test(priority=3)
    public void d_method(){
    System.out.println("I'm in method D");
    }

}

ulostulo

I'm in method E 
I'm in method A 
I'm in method D 
I'm in method C 
I'm in method B

Tässä olemme antaneet prioriteetit 0,1,3,6,9. Joten menetelmä, jonka prioriteetti on 0, suoritetaan ensin ja sitten menetelmä, jolla on prioriteetti 1 ja niin edelleen. Tässä aakkosjärjestysmenetelmän nimeä ei oteta huomioon, koska olemme määrittäneet prioriteetit

Menetelmät samalla prioriteetilla

Saattaa olla mahdollista, että menetelmät sisältävät saman prioriteetin. Näissä tapauksissa testng ottaa huomioon menetelmänimien aakkosjärjestyksen, jonka prioriteetti on sama.

package com.guru.testngannotations;
import org.testng.annotations.Test;

public class TestNG_Priority_Annotations {

    @Test(priority=6)
    public void c_method(){
    System.out.println("I'm in method C");
    }
    @Test(priority=9)
    public void b_method(){
    System.out.println("I'm in method B");
    }
    @Test(priority=6)
    public void a_method(){
    System.out.println("I'm in method A");
    }
    @Test(priority=0)
    public void e_method(){
    System.out.println("I'm in method E");
    }
    @Test(priority=3)
    public void d_method(){
    System.out.println("I'm in method D");
    }

}

ulostulo

I'm in method E 
I'm in method D 
I'm in method A 
I'm in method C 
I'm in method B 

Tässä "e" ja "d" suoritetaan niiden prioriteettiarvojen perusteella. Mutta menetelmät 'a' ja 'c' sisältävät saman prioriteettiarvon(6). Joten tässä testng ottaa huomioon "a" ja "c" aakkosjärjestyksen ja suorittaa ne sen mukaisesti.

Yhdistämällä sekä priorisoituja (jolla on sama prioriteetti) että priorisoimattomia menetelmiä

Tässä tapauksessa käsittelemme kaksi tapausta yhdessä testiluokassa.

  1. Menetelmät, joilla on sama prioriteettiarvo.
  2. Useampi kuin yksi priorisoimaton menetelmä.
package com.guru.testngannotations;

import org.testng.annotations.Test;

public class TestNG_Priority_Annotations {

	@Test()
	public void c_method(){
		System.out.println("I'm in method C");
	}
	@Test()
	public void b_method(){
		System.out.println("I'm in method B");
	}
	@Test(priority=6)
	public void a_method(){
		System.out.println("I'm in method A");
	}
	@Test(priority=0)
	public void e_method(){
		System.out.println("I'm in method E");
	}
	@Test(priority=6)
	public void d_method(){
		System.out.println("I'm in method D");
	}
}

lähtö:

I'm in method B 
I'm in method C 
I'm in method E 
I'm in method A 
I'm in method D
PASSED: b_method 
PASSED: c_method 
PASSED: e_method 
PASSED: a_method 
PASSED: d_method

Selitys:

Ensimmäinen valinta: Priorisoimattomat menetelmät: 'c' ja 'b': Aakkosjärjestyksen perusteella suoritettiin ensin "b" ja sitten "c".

Toinen mieltymys: Priorisoidut menetelmät: 'a', 'e' ja 'd': 'e' suoritettiin ensin, koska sillä oli korkein prioriteetti (0). Koska 'a' ja 'd' -menetelmien prioriteetti oli sama, testattiin niiden menetelmien nimien aakkosjärjestystä. Joten niiden välillä teloitettiin ensin "a" ja sitten "d".

Kirjainkoolla on merkitystä TestNG

Tiedoksi on olemassa standardisyntaksi prioriteetin määrittelemiseksi testNG:ssä eli @Testi (prioriteetti=4), oletetaan, että määrittelet sen jollain muulla syntaksilla @Testi (PRIORITY=1) niin IDE näyttää sen käännösvirheenä. Katso alla oleva kuva:

Kirjainkoolla on merkitystä TestNG

Yhteenveto

Kuten olet nähnyt, että jos on vaatimus suorittaa joukko testitapauksia tietyssä järjestyksessä, se voidaan tehdä helposti käyttämällä prioriteetti käyttämällä testNG:tä suoritustyökaluna.

Tämä opetusohjelma on mahdollista Ramandeep Singhin ja Raman osallistumisen ansiosta Krishna Gadde

Tiivistä tämä viesti seuraavasti: