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 tehtävä Google-haku tietyllä avainsanalla, sano "Facebook". Varmista nyt, että selaimen otsikko on muutettu "Facebook - Google Search".

Huomautus: Jokaisen koodattavan vaiheen tulee olla eri menetelmissä

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

Menetelmä 2: Käynnistä Google.com (launchGoogle())

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

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

Koodi skenaarioimme:

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);				
	    }		
	}		

Koodin selitys

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) toteaa, että Google.comin käynnistäminen 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) toteaa, että napsautat Googlen hakukuvaketta ja varmistavat, että selaimen otsikko on muutettu Facebook – Google-haku.

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);				
    }		
}

Koodin selitys

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