TestNG @टेस्ट प्राथमिकता Selenium

TestNG एक परीक्षण फ्रेमवर्क, जो विभिन्न प्रकार के परीक्षण डिज़ाइनों को कवर करता है जैसे यूनिट टेस्ट, कार्यात्मक परीक्षण, एंड टू एंड टेस्ट, यूआई टेस्ट और एकीकरण परीक्षण।

आप अपने में एक या एक से अधिक परीक्षण मामले चला सकते हैं टेस्टिंग कोड।

यदि एकाधिक परीक्षण मामलों को चलाते समय परीक्षण प्राथमिकता परिभाषित नहीं की गई है, TestNG सभी @Test को शून्य(0) प्राथमिकता प्रदान करता है।

अब, चलते समय, निचली प्राथमिकताओं को पहले शेड्यूल किया जाएगा।

का डेमो TestNG बिना प्राथमिकता के कोड

आइए एक परिदृश्य लें जहां सभी परीक्षण मामलों को पास करने के लिए अनुक्रमण की आवश्यकता होगी:

परिदृश्य: एक कोड जनरेट करें जिसमें आपको एक विशिष्ट कीवर्ड जैसे “फेसबुक” के साथ Google सर्च करना होगा। अब, सत्यापित करें कि ब्राउज़र शीर्षक “फेसबुक – Google सर्च” में बदल गया है।

नोट: आपके द्वारा कोड किया गया प्रत्येक चरण अलग-अलग तरीकों से होना चाहिए

विधि 1: ब्राउज़र खोलें Firefox (खुला ब्राउज़र())

विधि 2: Google.com लॉन्च करें (launchGoogle())

विधि 3: “फेसबुक” का उपयोग करके खोज करें (performSearchAndClick1stLink())

विधि 4: Google खोज पृष्ठ शीर्षक सत्यापित करें (FaceBookPageTitleVerification())

Code हमारे परिदृश्य के लिए:

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

का स्पष्टीकरण Code

जैसा कि ऊपर बताया गया है, हमने प्रत्येक क्रिया को स्वतंत्र तरीके से करने के लिए 4 परीक्षण मामले बनाए हैं।

  • पहली विधि (खुला ब्राउज़र) आरंभ करने के लिए राज्य Firefox ब्राउज़र.
  • दूसरी विधि (लॉन्चगूगल) यह बताता है कि Google.com को आरंभिक ब्राउज़र में लॉन्च किया गया है।
  • तीसरी विधि (कृपया खोज करें और क्लिक करें)खोज बॉक्स में खोज करने वाले राज्य (xpath के साथ) (“.//*[@title='खोज']”) खोज शब्द के साथ Facebook और
  • चौथी और अंतिम विधि (फेसबुकपेजशीर्षकसत्यापन) इसमें कहा गया है कि गूगल के सर्च आइकन पर क्लिक करें और पुष्टि करें कि ब्राउज़र का शीर्षक बदल दिया गया है फेसबुक - गूगल सर्च.

अब testNG का उपयोग करके इस कोड को चलाएं जैसा कि वीडियो में दिखाया गया है आपको सभी मिल जाएंगे परीक्षण का मामला असफल हो रहे हैं। असफलता का कारण: चूंकि पास होने के लिए पिछले परीक्षण मामले की निर्भरता है, इसलिए केवल वर्तमान चल रहे परीक्षण मामले को ही पास किया जाएगा।

इस मामले में,

  • पहली विधि जो निष्पादित की जाती है वह है खुला ब्राउज़र()। इसे पारित कर दिया गया क्योंकि इसकी कोई निर्भरता नहीं है।
  • दूसरी विधि निष्पादित की गई है फेसबुकपेजटाइटलसत्यापन(); यह विफल हो रहा है क्योंकि हम खोज बटन पर क्लिक करने और ब्राउज़र शीर्षक को सत्यापित करने का प्रयास कर रहे हैं।
  • आप देख सकते हैं कि अगर सर्च एक्टिविटी प्रोसेस नहीं है तो कोई भी दूसरा स्टेप कैसे पास हो सकता है। इसलिए, यही कारण है कि मेरे टेस्ट केस फेल हो रहे हैं।
PASSED: openBrowser
FAILED: FaceBookPageTitleVerification
FAILED: launchGoogle
FAILED: peformSeachAndClick1stLink

का डेमो TestNG वर्णमाला क्रम में बिना प्राथमिकता के कोड

यदि हम किसी प्राथमिकता का उल्लेख नहीं करते हैं, तो testng कोड में उनके कार्यान्वयन के स्थान की परवाह किए बिना उनके विधि नामों के वर्णमाला क्रम के आधार पर @Test विधियों को निष्पादित करेगा।

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

}

उत्पादन

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 

यद्यपि हमने विधियों को यादृच्छिक तरीके से परिभाषित किया था (सी, बी, ए, ई, डी), टेस्टिंग ने वर्णमाला क्रम को ध्यान में रखते हुए उनके विधि नामों के आधार पर विधियों को निष्पादित किया और यह आउटपुट में भी परिलक्षित हुआ।

प्राथमिकता कैसे निर्धारित करें? TestNG

जैसा कि आपने पिछले उदाहरण में देखा है कि इस परिदृश्य को पारित करने के लिए अनुक्रमण की आवश्यकता है, इसलिए हम कोड के पिछले भाग को संशोधित करेंगे प्राथमिकता पैरामीटर ताकि प्रत्येक परीक्षण उनको दी गई प्राथमिकता के अनुरूप चलाया जा सके।

अब जैसा कि आप देख सकते हैं कि हमने प्रत्येक परीक्षण मामले को प्राथमिकता दी है, इसका मतलब है कि कम प्राथमिकता वाले परीक्षण मामले को पहले निष्पादित किया जाएगा।

कार्रवाई में टेस्टएनजी को प्राथमिकता

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

का स्पष्टीकरण Code

प्रत्येक टेस्टकेस को प्राथमिकता देने के बाद, नीचे दिए गए वीडियो-2 में दिखाए अनुसार testNG का उपयोग करके उपरोक्त कोड चलाएं।

यहाँ, आप देख सकते हैं कि परीक्षण मामलों को प्राथमिकता दी गई है। कम प्राथमिकता वाले परीक्षण मामलों को पहले निष्पादित किया जाता है यानी अब परीक्षण मामलों में प्राथमिकता के अनुसार क्रमिक निष्पादन होता है। इसलिए, अब सभी परीक्षण मामले पास हो रहे हैं।

ग्रहण के कंसोल पर ध्यान दें:

उत्पादन :

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

संख्या 0 की प्राथमिकता सबसे अधिक है (इसे पहले निष्पादित किया जाएगा) और प्राथमिकता दी गई संख्या के आधार पर आगे बढ़ती है, अर्थात 0 की प्राथमिकता 1 से सबसे अधिक है। 1 की प्राथमिकता 2 से सबसे अधिक है और इसी प्रकार आगे भी।

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

}

उत्पादन

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

यहाँ हमने 0,1,3,6,9 के रूप में प्राथमिकताएँ दी हैं। इसलिए, 0 प्राथमिकता वाली विधि पहले निष्पादित की जाती है और फिर प्राथमिकता-1 वाली विधि और इसी तरह आगे भी। यहाँ वर्णमाला क्रम विधि नाम पर विचार नहीं किया जाएगा क्योंकि हमने प्राथमिकताएँ दी हैं

समान प्राथमिकता वाली विधियाँ

यह भी हो सकता है कि विधियों में समान प्राथमिकता हो। ऐसे मामलों में, testng उन विधियों के नामों के वर्णानुक्रम पर विचार करता है जिनकी प्राथमिकता समान है।

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

}

उत्पादन

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 

यहाँ 'e' और 'd' को उनके प्राथमिकता मानों के आधार पर निष्पादित किया जाता है। लेकिन 'a' और 'c' विधियों में समान प्राथमिकता मान (6) होता है। इसलिए, यहाँ testng 'a' और 'c' के वर्णमाला क्रम पर विचार करता है और उन्हें तदनुसार निष्पादित करता है।

प्राथमिकता प्राप्त (समान प्राथमिकता वाले) और गैर-प्राथमिकता प्राप्त दोनों तरीकों का संयोजन

इस मामले में, हम एक टेस्टिंग क्लास में दो मामलों को कवर करेंगे।

  1. समान प्राथमिकता मान वाली विधियाँ.
  2. एक से अधिक गैर-प्राथमिकता विधियाँ.
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");
	}
}

आउटपुट:

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

स्पष्टीकरण:

पहली प्राथमिकता: गैर-प्राथमिकता प्राप्त विधियाँ: 'c' और 'b': वर्णमाला क्रम के आधार पर पहले 'b' और फिर 'c' निष्पादित किया गया।

दूसरी प्राथमिकता: प्राथमिकता वाले तरीके: 'a', 'e' और 'd': 'e' को सबसे पहले निष्पादित किया गया क्योंकि इसकी प्राथमिकता सबसे अधिक (0) थी। चूंकि 'a' और 'd' विधियों की प्राथमिकता समान थी, इसलिए टेस्टिंग ने उनके विधियों के नामों के वर्णमाला क्रम पर विचार किया। इसलिए, उनके बीच, 'a' को पहले और फिर 'd' को निष्पादित किया गया।

केस-सेंसिटिव TestNG

आपकी जानकारी के लिए बता दें कि testNG में प्राथमिकता निर्धारित करने के लिए एक मानक सिंटैक्स है, अर्थात @टेस्ट (प्राथमिकता=4)मान लीजिए आप इसे किसी अन्य वाक्यविन्यास में परिभाषित कर रहे हैं @टेस्ट (प्राथमिकता=1) तो आपका IDE इसे संकलन त्रुटि के रूप में दिखाएगा। नीचे दी गई छवि देखें:

केस-सेंसिटिव TestNG

निष्कर्ष

जैसा कि आपने देखा है कि यदि किसी विशिष्ट क्रम में परीक्षण-मामले के सेट को चलाने की आवश्यकता है तो इसे आसानी से किया जा सकता है प्राथमिकता रन टूल के रूप में testNG का उपयोग करना।

यह ट्यूटोरियल रमनदीप सिंह और रमा के योगदान के कारण संभव हुआ है Krishna गडदे

इस पोस्ट को संक्षेप में इस प्रकार लिखें: