डेटाप्रदाता एवं TestNG XML: पैरामीटरीकरण Selenium(उदाहरण)

जब हम सॉफ्टवेयर बनाते हैं, तो हम हमेशा यही चाहते हैं कि यह अलग-अलग डेटा सेट के साथ अलग-अलग तरीके से काम करे। परीक्षण सॉफ्टवेयर का एक ही टुकड़ा, हम इसे केवल एक डेटा सेट के साथ परीक्षण करने में अनुचित नहीं हो सकते। यहाँ फिर से, हमें यह सत्यापित करने की आवश्यकता है कि हमारा सिस्टम उन सभी संयोजनों को ले रहा है जो समर्थन करने की उम्मीद है। इसके लिए, हमें अपनी परीक्षण स्क्रिप्ट को पैरामीटराइज़ करने की आवश्यकता है। यहाँ पैरामीटराइज़ेशन तस्वीर में आता है।

पैरामीटरीकरण Selenium

पैरामीटरीकरण Selenium रनटाइम पर एप्लिकेशन को कई डेटा पास करने के लिए टेस्ट स्क्रिप्ट को पैरामीटराइज़ करने की एक प्रक्रिया है। यह निष्पादन की एक रणनीति है जो विभिन्न मानों का उपयोग करके स्वचालित रूप से कई बार परीक्षण मामलों को चलाती है। परीक्षण स्क्रिप्ट को पैरामीटराइज़ करके प्राप्त की गई अवधारणा को कहा जाता है डेटा संचालित परीक्षण.

पैरामीटरीकरण का प्रकार TestNG-

पैरामीटराइजेशन को और अधिक स्पष्ट करने के लिए, हम सबसे लोकप्रिय फ्रेमवर्क में पैरामीटराइजेशन विकल्पों पर विचार करेंगे। Selenium वेबड्राइवर – TestNG.

वहां दो तरीके जिसके द्वारा हम पैरामीटराइजेशन प्राप्त कर सकते हैं TestNG

  1. की मदद से पैरामीटर्स टिप्पणी और TestNG एक्सएमएल फ़ाइल.

    पैरामीटरीकरण का प्रकार TestNG

  2. की मदद से डेटा प्रदाता एनोटेशन।

    पैरामीटरीकरण का प्रकार TestNG

पैरामीटरीकरण का प्रकार TestNG

Testng.xml से पैरामीटर्स सूट या टेस्ट लेवल हो सकते हैं

DataProvider से पैरामीटर, Method और ITestContext को पैरामीटर के रूप में ले सकता है।

आइये इनका विस्तार से अध्ययन करें –

पैरामीटर एनोटेशन TestNG

पैरामीटर एनोटेशन TestNG .xml फ़ाइल का उपयोग करके परीक्षण विधियों में मानों को तर्क के रूप में पास करने के लिए उपयोग की जाने वाली विधि है। रन टाइम के दौरान उपयोगकर्ताओं को परीक्षण विधियों में मान पास करने की आवश्यकता हो सकती है। @Parameters एनोटेशन विधि का उपयोग @Test, @Before, @After या @Factory एनोटेशन वाली किसी भी विधि में किया जा सकता है।

Testng.xml के साथ पैरामीटर एनोटेशन

जब आप जटिलता से निपटना चाहते हैं और इनपुट संयोजनों की संख्या कम है तो एनोटेशन का उपयोग करके पैरामीटराइजेशन का चयन करें।

आइये देखें यह कैसे काम करता है

परिदृश्य का परीक्षण करें

चरण 1) ब्राउज़र लॉन्च करें और Google.com पर जाएं

चरण 2) खोज कीवर्ड दर्ज करें

Testng.Xml के साथ पैरामीटर एनोटेशन

चरण 3) सत्यापित करें कि इनपुट किया गया मान हमारे परीक्षण डेटा द्वारा प्रदान किए गए मान के समान है

चरण 4) सभी मान इनपुट होने तक 2 और 3 को दोहराएं

परीक्षण लेखक खोजकुंजी
Guru99 इंडिया
Krishna अमेरिका
भुपेश चीन

यहां एक उदाहरण दिया गया है कि बिना पैरामीटर के इसे कैसे किया जाए

package parameters;

import org.testng.annotations.Test;
import org.testng.AssertJUnit;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

public class NoParameterWithTestNGXML {
	String driverPath = "C:\\geckodriver.exe";
	WebDriver driver;
    
    @Test
    public void testNoParameter() throws InterruptedException{
        String author = "guru99";
        String searchKey = "india";
        
        System.setProperty("webdriver.gecko.driver", driverPath);        
        driver= new FirefoxDriver();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        
        driver.get("https://google.com");
        WebElement searchText = driver.findElement(By.name("q"));
        //Searching text in google text box
        searchText.sendKeys(searchKey);
        
        System.out.println("Welcome ->"+author+" Your search key is->"+searchKey);
                System.out.println("Thread will sleep now");
        
        Thread.sleep(3000);
        System.out.println("Value in Google Search Box = "+searchText.getAttribute("value") +" ::: Value given by input = "+searchKey);
        //verifying the value in google search box
        AssertJUnit.assertTrue(searchText.getAttribute("value").equalsIgnoreCase(searchKey));
}
}

एक अध्ययन, उपरोक्त उदाहरण। जरा कल्पना करें कि जब हम 3 इनपुट संयोजनों के लिए ऐसा करेंगे तो कोड कितना जटिल हो जाएगा

अब, आइए इसका उपयोग करके पैरामीटराइज़ करें TestNG

ऐसा करने के लिए, आपको यह करना होगा

  • एक XML फ़ाइल बनाएं जो पैरामीटर्स को संग्रहीत करेगी
  • परीक्षण में, एनोटेशन @Parameters जोड़ें

Testng.Xml के साथ पैरामीटर एनोटेशन

यहाँ पूरा कोड है

टेस्ट स्तर TestNG. Xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="TestSuite" thread-count="3" >
<parameter name="author" value="Guru99" />
<parameter name="searchKey" value="India" />
<test name="testGuru">
<parameter name="searchKey" value="UK" />
<classes>
<class name="parameters.ParameterWithTestNGXML">
</class>
</classes>
</test>
</suite>

पैरामीटरके साथTestNGXML.java फ़ाइल

package parameters;

import org.testng.AssertJUnit;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

import org.testng.annotations.Optional;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class ParameterWithTestNGXML {
	String driverPath = "C:\\geckodriver.exe";
	WebDriver driver;
    @Test
    @Parameters({"author","searchKey"})
    public void testParameterWithXML( @Optional("Abc") String author,String searchKey) throws InterruptedException{

        System.setProperty("webdriver.gecko.driver", driverPath);
        driver = new FirefoxDriver();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.get("https://google.com");

        WebElement searchText = driver.findElement(By.name("q"));
        //Searching text in google text box
        searchText.sendKeys(searchKey);

        System.out.println("Welcome ->"+author+" Your search key is->"+searchKey);
        System.out.println("Thread will sleep now");
        Thread.sleep(3000);
        System.out.println("Value in Google Search Box = "+searchText.getAttribute("value") +" ::: Value given by input = "+searchKey);
        //verifying the value in google search box
        AssertJUnit.assertTrue(searchText.getAttribute("value").equalsIgnoreCase(searchKey));

}
}

स्क्रिप्ट चलाने के निर्देश, XML फ़ाइल का चयन करें और टेस्ट NG सुइट के रूप में चलाएँ

.xml फ़ाइल पर राइट क्लिक करें -> Run as -> टेस्टिंग सुइट (नोट : सुइट)

पैरामीटरके साथTestNGXML.java फ़ाइल

अब, मापदंडों को 2 स्तरों पर परिभाषित किया जा सकता है

  1. सुइट स्तर - अंदर के पैरामीटर टैग TestNG XML फ़ाइल एक सुइट स्तर पैरामीटर होगा.
  2. परीक्षण स्तर - परीक्षण के अंदर के पैरामीटर परीक्षण XML फ़ाइल का टैग एक परीक्षण स्तर पैरामीटर होगा।

यहाँ सुइट स्तर के मापदंडों के साथ एक ही परीक्षण है

पैरामीटरके साथTestNGXML.java फ़ाइल

नोट: यदि पैरामीटर का नाम सूट लेवल और टेस्ट लेवल में समान है, तो टेस्ट लेवल पैरामीटर को सूट लेवल पर वरीयता मिलेगी। तो, उस स्थिति में, उस टेस्ट लेवल के अंदर की सभी क्लास ओवरराइड किए गए पैरामीटर को साझा करेंगी, और टेस्ट लेवल के बाहर की अन्य क्लास सूट लेवल पैरामीटर को साझा करेंगी।

पैरामीटरके साथTestNGXML.java फ़ाइल

समस्या निवारण

अंक # 1 testng.xml में पैरामीटर मान को संबंधित परीक्षण विधि के पैरामीटर में टाइपकास्ट नहीं किया जा सकता है, इससे त्रुटि उत्पन्न होगी।

निम्नलिखित उदाहरण पर विचार करें

समस्या निवारण

यहां, 'author' विशेषता 'Guru99' के बराबर है जो एक स्ट्रिंग है और संबंधित परीक्षण विधि में यह एक पूर्णांक मान की अपेक्षा कर रहा है, इसलिए हमें यहां एक अपवाद मिलेगा।

अंक # 2 आपके @Parameters का testing.xml में कोई संगत मान नहीं है।

आप इस स्थिति को जोड़कर हल कर सकते हैं @वैकल्पिक टिप्पणी परीक्षण विधि में संगत पैरामीटर में।

समस्या निवारण

अंक # 3: आप Testng.xml का उपयोग करके एक ही पैरामीटर के एकाधिक मानों का परीक्षण करना चाहते हैं

सरल उत्तर यह है कि ऐसा नहीं किया जा सकता! आपके पास कई अलग-अलग पैरामीटर हो सकते हैं, लेकिन प्रत्येक पैरामीटर में केवल एक ही मान हो सकता है। यह स्क्रिप्ट में मानों को हार्डकोड करने से रोकने में मदद करता है। यह कोड को पुनः उपयोग करने योग्य बनाता है। इसे अपनी स्क्रिप्ट के लिए कॉन्फ़िगरेशन फ़ाइल के रूप में सोचें। यदि आप किसी पैरामीटर के लिए कई मानों का उपयोग करना चाहते हैं तो DataProviders का उपयोग करें

डेटा प्रदाता TestNG

डेटा प्रदाता TestNG यह एक विधि है जिसका उपयोग तब किया जाता है जब उपयोगकर्ता को जटिल पैरामीटर पास करने की आवश्यकता होती है। जटिल पैरामीटर को बनाने की आवश्यकता होती है Java जैसे कि जटिल ऑब्जेक्ट, प्रॉपर्टी फ़ाइलों से या डेटाबेस से ऑब्जेक्ट को डेटा प्रदाता विधि द्वारा पास किया जा सकता है। विधि @DataProvider द्वारा एनोटेट की गई है और यह ऑब्जेक्ट की एक सरणी लौटाती है।

डेटाप्रदाता का उपयोग करने वाले पैरामीटर

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

हमारे परीक्षण ढांचे का उपयोग करके हजारों वेब फ़ॉर्म भरने के लिए हमें एक अलग कार्यप्रणाली की आवश्यकता है जो हमें एकल निष्पादन प्रवाह में बहुत बड़ा डेटासेट दे सके।

यह डेटा संचालित अवधारणा निम्न द्वारा प्राप्त की जाती है @डेटाप्रदाता एनोटेशन में TestNG.

डेटाप्रदाता का उपयोग करते हुए पैरामीटर

इसमें केवल एक ही विशेषता 'नाम'यदि आप नाम विशेषता निर्दिष्ट नहीं करते हैं तो डेटा प्रदाता का नाम संबंधित विधि नाम के समान होगा।

डेटा प्रदाता रिटर्न एक द्वि-आयामी JAVA ऑब्जेक्ट टेस्ट विधि और टेस्ट विधि, M*N प्रकार की ऑब्जेक्ट सरणी में M बार इनवोक करेगी। उदाहरण के लिए, यदि डेटाप्रोवाइडर 2*3 ऑब्जेक्ट की सरणी लौटाता है, तो संबंधित टेस्टकेस को हर बार 2 पैरामीटर के साथ 3 बार इनवोक किया जाएगा।

डेटाप्रदाता का उपयोग करते हुए पैरामीटर

पूरा उदाहरण

डेटाप्रदाता का उपयोग करते हुए पैरामीटर

package parameters;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

import org.testng.Assert;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class ParameterByDataprovider {
    WebDriver driver;
    String driverPath = "C:\\geckodriver.exe";

    @BeforeTest
    public void setup(){
        //Create firefox driver object
         System.setProperty("webdriver.gecko.driver", driverPath);
         driver = new FirefoxDriver();
         driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
         driver.get("https://google.com");
    }
 
    /** Test case to verify google search box
     * @param author
     * @param searchKey
     * @throws InterruptedException
     */

    @Test(dataProvider="SearchProvider")
    public void testMethod(String author,String searchKey) throws InterruptedException{
    {
        WebElement searchText = driver.findElement(By.name("q"));
        //search value in google searchbox
        searchText.sendKeys(searchKey);
        System.out.println("Welcome ->"+author+" Your search key is->"+searchKey);
        Thread.sleep(3000);
        String testValue = searchText.getAttribute("value");
        System.out.println(testValue +"::::"+searchKey);
        searchText.clear();
        //Verify if the value in google search box is correct
        Assert.assertTrue(testValue.equalsIgnoreCase(searchKey));
    }
    }
    /**
     * @return Object[][] where first column contains 'author'
     * and second column contains 'searchKey'
     */

    @DataProvider(name="SearchProvider")
    public Object[][] getDataFromDataprovider(){
    return new Object[][] 
    	{
            { "Guru99", "India" },
            { "Krishna", "UK" },
            { "Bhupesh", "USA" }
        };

    }

}

भिन्न वर्ग से DataProvider को आमंत्रित करें

डिफ़ॉल्ट रूप से, DataProvider उसी क्लास में रहता है जहाँ टेस्ट मेथड है या उसका बेस क्लास है। इसे किसी अन्य क्लास में रखने के लिए हमें डेटा प्रोवाइडर मेथड को स्टैटिक बनाना होगा और टेस्ट मेथड में हमें एक विशेषता जोड़नी होगी डेटा प्रदाताक्लास in @परीक्षा एनोटेशन।

अलग क्लास से डेटा प्रदाता को आमंत्रित करें

कोड उदाहरण

अलग क्लास से डेटा प्रदाता को आमंत्रित करें

TestClass पैरामीटरDataproviderWithClassLevel.java

package parameters;

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

public class ParameterDataproviderWithClassLevel {
    WebDriver driver;
    String driverPath = "C:\\geckodriver.exe";
    
 	@BeforeTest
    public void setup(){
 		System.setProperty("webdriver.gecko.driver", driverPath);
		driver = new FirefoxDriver();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.get("https://google.com");
    }
   
    @Test(dataProvider="SearchProvider",dataProviderClass=DataproviderClass.class)
    public void testMethod(String author,String searchKey) throws InterruptedException{
        
        WebElement searchText = driver.findElement(By.name("q"));
        //Search text in google text box
        searchText.sendKeys(searchKey);
        System.out.println("Welcome ->"+author+" Your search key is->"+searchKey);
        Thread.sleep(3000);
        //get text from search box
        String testValue = searchText.getAttribute("value");
        System.out.println(testValue +"::::"+searchKey);
        searchText.clear();
        //verify if search box has correct value
        Assert.assertTrue(testValue.equalsIgnoreCase(searchKey));
   }
}

डेटाप्रदाताक्लास.जावा

package parameters;

import org.testng.annotations.DataProvider;
public class DataproviderClass {
        @DataProvider(name="SearchProvider")
        public static Object[][] getDataFromDataprovider(){
            return new Object[][] {
                { "Guru99", "India" },
                { "Krishna", "UK" },
                { "Bhupesh", "USA" }
            };  
}}

डेटाप्रदाता में पैरामीटर के प्रकार

डेटाप्रदाता विधि द्वारा दो प्रकार के पैरामीटर समर्थित हैं।

विधि- अगर वही डेटाप्रदाता को विभिन्न परीक्षण विधि के साथ अलग-अलग व्यवहार करना चाहिए, विधि पैरामीटर का उपयोग करें।

डेटाप्रदाता में पैरामीटर के प्रकार

निम्नलिखित उदाहरण में,

  • हम जाँचते हैं कि क्या विधि का नाम testMethodA है।
  • यदि हाँ तो मान का एक सेट लौटाएँ
  • अन्यथा मान का दूसरा सेट लौटाएँ
package parameters;

import java.lang.reflect.Method;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class ParameterByMethodInDataprovider{

    WebDriver driver;
    String driverPath = "C:\\geckodriver.exe";
     
    @BeforeTest
    public void setup(){
    	System.setProperty("webdriver.gecko.driver", driverPath);
    	driver = new FirefoxDriver();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.get("https://google.com");
    }

    @Test(dataProvider="SearchProvider")
    public void testMethodA(String author,String searchKey) throws InterruptedException{
        
    	WebElement searchText = driver.findElement(By.name("q"));
        //Search text in search box
        searchText.sendKeys(searchKey);
        //Print author and search string
        System.out.println("Welcome ->"+author+" Your search key is->"+searchKey);
        Thread.sleep(3000);
        String testValue = searchText.getAttribute("value");
        System.out.println(testValue +"::::"+searchKey);
        searchText.clear();
        //Verify if google text box is showing correct value
        Assert.assertTrue(testValue.equalsIgnoreCase(searchKey));
    }
      
    @Test(dataProvider="SearchProvider")
    public void testMethodB(String searchKey) throws InterruptedException{
        {
        	WebElement searchText = driver.findElement(By.name("q"));
            //Search text in search box
            searchText.sendKeys(searchKey);
            //Print only search string
            System.out.println("Welcome ->Unknown user Your search key is->"+searchKey);
            Thread.sleep(3000);
            String testValue = searchText.getAttribute("value");
            System.out.println(testValue +"::::"+searchKey);
            searchText.clear();
            //Verify if google text box is showing correct value
            Assert.assertTrue(testValue.equalsIgnoreCase(searchKey));
        }
    }    
    /**
     * Here DataProvider returning value on the basis of test method name
     * @param m
     * @return
     **/

    @DataProvider(name="SearchProvider")
    public Object[][] getDataFromDataprovider(Method m){
        if(m.getName().equalsIgnoreCase("testMethodA")){
        return new Object[][] {
                { "Guru99", "India" },
                { "Krishna", "UK" },
                { "Bhupesh", "USA" }
            };}
        else{
        return new Object[][] {
                { "Canada" },
                { "Russia" },
                { "Japan" }
            };}       
    }
}

आउटपुट यह है

डेटाप्रदाता में पैरामीटर के प्रकार

ITestContext- इसका उपयोग समूहों के आधार पर परीक्षण मामलों के लिए अलग-अलग पैरामीटर बनाने के लिए किया जा सकता है।

वास्तविक जीवन में, आप परीक्षण विधियों, होस्ट, परीक्षण के कॉन्फ़िगरेशन के आधार पर पैरामीटर मानों को बदलने के लिए ITestContext का उपयोग कर सकते हैं।

डेटाप्रदाता में पैरामीटर के प्रकार

निम्नलिखित कोड उदाहरण में

  • हमारे पास 2 समूह A और B हैं
  • प्रत्येक परीक्षण विधि को एक समूह को सौंपा गया है
  • यदि समूह का मान A है, तो एक विशेष डेटा सेट लौटाया जाता है
  • यदि समूह का मान B है, तो दूसरा डेटा सेट लौटाया जाता है
package parameters;

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.ITestContext;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class ParameterByITestContextInDataprovider {
	WebDriver driver;
	String driverPath = "C:\\geckodriver.exe";
	@BeforeTest(groups={"A","B"})
	public void setup(){
		System.setProperty("webdriver.gecko.driver", driverPath);
		  	driver = new FirefoxDriver();
			driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
			driver.get("https://google.com");
	}
	
	@Test(dataProvider="SearchProvider",groups="A")
	public void testMethodA(String author,String searchKey) throws InterruptedException{
		{
		  //search google textbox
			WebElement searchText = driver.findElement(By.name("q"));
			//search a value on it
			searchText.sendKeys(searchKey);
			System.out.println("Welcome ->"+author+" Your search key is->"+searchKey);
			Thread.sleep(3000);
			String testValue = searchText.getAttribute("value");
			System.out.println(testValue +"::::"+searchKey);
			searchText.clear();
			//verify correct value in searchbox
			Assert.assertTrue(testValue.equalsIgnoreCase(searchKey));
	}
	}
	
	@Test(dataProvider="SearchProvider",groups="B")
	public void testMethodB(String searchKey) throws InterruptedException{
		{
		  //find google search box
			WebElement searchText = driver.findElement(By.name("q"));
			//search a value on it
			searchText.sendKeys(searchKey);
			System.out.println("Welcome ->Unknown user Your search key is->"+searchKey);
			Thread.sleep(3000);
			String testValue = searchText.getAttribute("value");
			System.out.println(testValue +"::::"+searchKey);
			searchText.clear();
			//verify correct value in searchbox
			Assert.assertTrue(testValue.equalsIgnoreCase(searchKey));
	}
	}
	
	/**
	 * Here the DAtaProvider will provide Object array on the basis on ITestContext
	 * @param c
	 * @return
	 */
	@DataProvider(name="SearchProvider")
	public Object[][] getDataFromDataprovider(ITestContext c){
	Object[][] groupArray = null;
		for (String group : c.getIncludedGroups()) {
		if(group.equalsIgnoreCase("A")){
			groupArray = new Object[][] { 
					{ "Guru99", "India" }, 
					{ "Krishna", "UK" }, 
					{ "Bhupesh", "USA" } 
				};
		break;	
		}
			else if(group.equalsIgnoreCase("B"))
			{
			groupArray = new Object[][] { 
						{  "Canada" }, 
						{  "Russia" }, 
						{  "Japan" } 
					};
			}
		break;
	}
	return groupArray;		
	}
}

नोट: यदि आप सीधे अपना testng क्लास चलाते हैं, तो यह पहले dataprovider को कॉल करेगा जो समूह जानकारी प्राप्त नहीं कर सकता क्योंकि समूह उपलब्ध नहीं हैं। लेकिन इसके बजाय यदि आप इस क्लास को testng.xml के माध्यम से कॉल करते हैं, तो इसमें ITestContext के साथ समूह जानकारी उपलब्ध होगी। टेस्ट को कॉल करने के लिए निम्न XML का उपयोग करें

<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
<suite name="test-parameter">

  <test name="example1">

    <groups>
        <run>
            <include name="A" />
        </run>
    </groups>

    <classes>
       <class
        name="parameters.ParameterByITestContextInDataprovider" />
    </classes>

  </test>


  <test name="example2">

    <groups>
        <run>
            <include name="B" />
        </run>
    </groups>

    <classes>
       <class
        name="parameters.ParameterByITestContextInDataprovider" />
    </classes>

  </test>

</suite>

सारांश

  • पैरामीटरीकरण बनाने की आवश्यकता है डेटा संचालित परीक्षण.
  • TestNG दो प्रकार के पैरामीटराइजेशन का समर्थन करें, @पैरामीटर+TestNG. Xml और उपयोग कर रहे हैं@डेटाप्रदाता
  • In @पैरामीटर+TestNG. Xml पैरामीटर्स को सुइट स्तर और परीक्षण स्तर में रखा जा सकता है।

    दोनों स्थानों पर एक ही पैरामीटर नाम घोषित किया गया है; परीक्षण स्तर पैरामीटर को सूट स्तर पैरामीटर पर वरीयता दी जाएगी।

  • @पैरामीटर+ का उपयोग करकेTestNG.xml में एक समय में केवल एक मान सेट किया जा सकता है, लेकिन @DataProvider रिटर्न करता है ऑब्जेक्ट की 2d सरणी.
  • यदि DataProvider उस वर्ग से भिन्न वर्ग में मौजूद है जहाँ परीक्षण विधि स्थित है,डेटा प्रदाता होना चाहिए स्थैतिक विधि.
  • इसके द्वारा दो पैरामीटर समर्थित हैं डेटा प्रदाता रहे विधि और ITestContext.