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: Looge kood, mille puhul peate tegema Google'i otsingu konkreetse märksõnaga, öelge "Facebook". Nüüd veenduge, et brauseri pealkiri on muudetud "Facebook - Google'i otsing".

Märkus. Iga kodeeritav samm peaks olema eraldi meetodites

Meetod 1: Avage brauser, öelge Firefox (openBrowser())

Meetod 2: Käivitage veebisait Google.com (launchGoogle())

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

Meetod 4: Google'i otsingulehe pealkirja kinnitamine (FaceBookPageTitleVerification())

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

Koodi selgitus

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

  • Esimene meetod (openBrowser) olekud lähtestamiseks Firefox brauser.
  • Teine meetod (käivita Google) ütleb, et Google.com käivitamine on lähtestatud brauseris.
  • Kolmas meetod (peformSeachAndClick1stLink)olekud, mis sooritavad otsingu otsingukastis (koos xpath (.//*[@title='Otsi']) otsingusõnaga as Facebook ja
  • Neljas ja viimane meetod (FaceBookPageTitleVerification) märgib, et klõpsa Google'i otsingu ikoonil ja kinnitab, et brauseri pealkiri on muudetud Facebook – Google'i 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);				
    }		
}

Koodi selgitus

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