TestNG @Testi prioriteet sisse Selenium

TestNG on Testimine raamistik, mis hรตlmab erinevat tรผรผpi testikujundusi, nagu รผksuse test, funktsionaalne test, otsast lรตpuni, kasutajaliidese test ja integratsioonitest.

Saate kรคivitada รผhe vรตi mitu testjuhtumit Testng kood.

Kui testi prioriteeti pole mitme testjuhtumi kรคitamise ajal mรครคratletud, TestNG mรครคrab kogu @Testi prioriteediks null(0).

Nรผรผd jooksmise ajal; madalamad prioriteedid mรครคratakse esimesena.

Demo TestNG kood ilma prioriteedita

Vรตtame stsenaariumi, kus kรตigi testjuhtumite lรคbimiseks on vaja jรคrjestamist:

Stsenaarium: Genereerige kood, kus peate tegema jรคrgmist. Google otsi kindla mรคrksรตnaga, nรคiteks โ€žFacebookโ€œ. Nรผรผd veendu, et brauseri pealkiri on muudetud โ€žFacebook โ€“ Google Otsingโ€.

Mรคrkus. Iga kodeeritav samm peaks olema eraldi meetodites

Meetod 1: Avage brauser, รถelge Firefox (openBrowser())

Meetod 2Kรคivitamine Google.com (kรคivitusGoogle())

Meetod 3: sooritage otsing "Facebooki" abil (performSearchAndClick1stLink())

Meetod 4Kinnita Google otsingulehe pealkiri (FaceBookPageTitleVerification())

Code meie stsenaariumi jaoks:

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

Selgitus Code

Nagu eespool mainitud, oleme loonud 4 testjuhtumit iga toimingu sooritamiseks sรตltumatutes meetodites.

  • Esimene meetod (openBrowser) olekud lรคhtestamiseks Firefox brauser.
  • Teine meetod (kรคivitamineGoogle) osariigid, mis kรคivitavad Google.com on initsialiseeritud brauseris.
  • Kolmas meetod (peformSeachAndClick1stLink)olekud, mis sooritavad otsingu otsingukastis (koos xpath (.//*[@title='Otsi']) otsingusรตnaga as Facebook ja
  • Neljas ja viimane meetod (FaceBookPageTitleVerification) osariigid, mis klรตpsavad otsinguikoonil Google ja kontrollige, kas brauseri pealkiri on muudetud Facebook - Google Otsing.

Nรผรผd kรคivitage see kood testNG abil, nagu on nรคidatud videos, leiate kรตik Testjuhtum ebaรตnnestuvad. Ebaรตnnestumise pรตhjus: kuna eelmise testjuhtumi lรคbimine sรตltub sellest, siis lรคbitakse ainult praegune testjuhtum.

Sel juhul,

  • Esimene meetod, mida rakendatakse, on openBrowser(). See sai lรคbi, kuna sellel ei ole mingit sรตltuvust.
  • Teine teostatud meetod on FaceBookPageTitleVerification(); see ebaรตnnestub, kuna proovime klรตpsata otsingunupul ja kinnitada brauseri pealkirja.
  • Nรคete, et kui otsingutegevust ei tรถรถdelda, siis kuidas saab mรตni muu samm lรคbida. See on pรตhjus, miks minu testjuhtumid ebaรตnnestuvad.
PASSED: openBrowser
FAILED: FaceBookPageTitleVerification
FAILED: launchGoogle
FAILED: peformSeachAndClick1stLink

Demo TestNG kood ilma prioriteedita tรคhestikulises jรคrjekorras

Kui me prioriteeti ei maini, kรคivitab testng @Test meetodid nende meetodinimede tรคhestikulises jรคrjekorras, olenemata nende rakendamise kohast koodis.

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

}

Vรคljund

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 

Kuigi defineerisime meetodid juhuslikult (c, b, a, e, d), kรคivitas testng meetodid nende meetodite nimede alusel, vรตttes arvesse tรคhestiku jรคrjekorda ja sama kajastus ka vรคljundis.

Kuidas seada prioriteet sisse TestNG

Nagu nรคgite eelmises nรคites, et selle stsenaariumi lรคbimiseks on vaja jรคrjestamist, muudame eelmist koodilรตiku Prioriteedi parameeter nii et iga test peaks olema vastuolus neile mรครคratud prioriteediga.

Nรผรผd, nagu nรคete, oleme mรครคranud igale testjuhtumile prioriteedi, tรคhendab, et esmalt tรคidetakse madalama prioriteediga vรครคrtus.

Prioriteet testNG tegevuses

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

Selgitus Code

Pรคrast igale testijuhtumile prioriteedi mรครคramist kรคivitage รผlaltoodud kood, kasutades testNG-d, nagu on nรคidatud allpool mainitud video-2-s.

Siin nรคete, et testjuhtumid on prioriteetsed. Esmalt tรคidetakse madalama prioriteediga testjuhtumid, st nรผรผd toimub testjuhtumites jรคrjestikune tรคitmine vastavalt prioriteedile. Seega on kรตik katsejuhtumid praegu lรคbinud.

Pange tรคhele eclipse'i konsooli:

Vรคljund :

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

Number 0 on kรตrgeima prioriteediga (see kรคivitatakse esimesena) ja prioriteet lรคheb edasi antud arvu alusel, st 0 on kรตrgeima prioriteediga kui 1. 1 on kรตrgeima prioriteediga kui 2 ja nii edasi.

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

}

Vรคljund

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

Siin oleme andnud prioriteedid 0,1,3,6,9. Seega kรคivitatakse kรตigepealt meetod, mille prioriteet on 0, ja seejรคrel meetod, mille prioriteet on 1 ja nii edasi. Siin ei vรตeta arvesse tรคhestikulise jรคrjestuse meetodi nime, kuna mรครคrasime prioriteedid

Sama prioriteediga meetodid

Vรตimalik, et meetodid vรตivad sisaldada sama prioriteeti. Sellistel juhtudel arvestab testng meetodinimede tรคhestikulist jรคrjekorda, mille prioriteet 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");
    }

}

Vรคljund

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 

Siin tรคidetakse 'e' ja 'd' nende prioriteetsete vรครคrtuste alusel. Kuid meetodid "a" ja "c" sisaldavad sama prioriteedivรครคrtust (6). Seega arvestab testng siin tรคhestiku 'a' ja 'c' jรคrjekorda ning tรคidab need vastavalt.

Kombineerides nii prioriteetsed (sama prioriteediga) kui ka prioritiseerimata meetodid

Sel juhul kรคsitleme รผhes testimisklassis kahte juhtumit.

  1. Sama prioriteetse vรครคrtusega meetodid.
  2. Rohkem kui รผks mitteprioriteetne meetod.
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");
	}
}

Vรคljund:

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

Selgitus:

Esimene eelistus: Prioriteetideta meetodid: 'c' ja 'b': tรคhestikulise jรคrjekorra alusel kรคivitati kรตigepealt "b" ja seejรคrel "c".

Teine eelistus: Prioriteetsed meetodid: "a", "e" ja "d": "e" kรคivitati esimesena, kuna sellel oli kรตrgeim prioriteet (0). Kuna 'a' ja 'd' meetodite prioriteetsus oli sama, arvestas testng nende meetodite nimede tรคhestikulist jรคrjekorda. Nii et nende vahel hukati kรตigepealt "a" ja seejรคrel "d".

tรตstutundlik TestNG

Lihtsalt teie teadmiseks on standardne sรผntaks prioriteedi mรครคratlemiseks testNG-s, st @Test (prioriteet=4), oletame, et mรครคratlete selle mรตnes teises sรผntaksis @Test (PRIORITY=1) siis nรคitab teie IDE seda kompileerimisveana. Vaadake allolevat pilti:

tรตstutundlik TestNG

Jรคreldus

Nagu olete nรคinud, kui on nรตue kรคivitada testjuhtumi komplekt kindlas jรคrjestuses, saab seda hรตlpsasti teha kasutades Prioriteet kasutades testNG-d kรคitamistรถรถriistana.

See รตpetus sai vรตimalikuks tรคnu Ramandeep Singhi ja Rama panusele Krishna Gadde

Vรตta see postitus kokku jรคrgmiselt: