के साथ कई परीक्षण मामले चलाएँ TestNG सुइट में Selenium
TestNG आपको अपने प्रोजेक्ट के अंदर समानांतर रूप से परीक्षण विधियाँ, परीक्षण कक्षाएँ और परीक्षण मामले चलाने में सक्षम बनाता है। समानांतर निष्पादन करके, हम 'निष्पादन समय' को कम कर सकते हैं क्योंकि परीक्षण अलग-अलग थ्रेड में एक साथ शुरू और निष्पादित होते हैं।
यहाँ हम देखेंगे कि कैसे कई क्लासेस (अर्थात विभिन्न सुइट्स) को चलाया जाए TestNG.
चरण १) एक बनाना TestNGपरीक्षण निष्पादित करने के लिए .xml फ़ाइल
ऐसा करने के लिए नीचे दिए गए चरणों का पालन करें।
- एक्लिप्स में एक नया प्रोजेक्ट बनाएं
- प्रोजेक्ट में दो पैकेज बनाएं (उन्हें com.suite1 और com.suite2 नाम दें)
- प्रत्येक पैकेज में एक क्लास बनाएं (उन्हें Flipkart.java और Snapdeal.java नाम दें) और नीचे दिए गए कोड को संबंधित क्लास में कॉपी करें
- अपने प्रोजेक्ट में एक नई फ़ाइल बनाएं और उसका नाम testng.xml रखें (सुनिश्चित करें कि आपने eclipse के लिए परीक्षण प्लगइन स्थापित किया है, निर्देश उपलब्ध हैं) यहाँ उत्पन्न करें). Testng.xml में सभी कॉन्फ़िगरेशन (क्लासनाम, टेस्टनाम और सूटनाम) शामिल हैं।
फ्लिपकार्ट.जावा
package com.suite1; import java.util.concurrent.TimeUnit; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.interactions.Actions; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; public class Flipkart{ WebDriver driver = new FirefoxDriver(); String username = ""; // Change to your username and passwrod String password = ""; // This method is to navigate flipkart URL @BeforeClass public void init() { driver.manage().window().maximize(); driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); driver.navigate().to("https://www.flipkart.com"); } // To log in flipkart @Test public void login() { driver.findElement(By.partialLinkText("Login")).click(); driver.findElement( By.cssSelector(".fk-input.login-form-input.user-email")) .sendKeys(username); driver.findElement( By.cssSelector(".fk-input.login-form-input.user-pwd")) .sendKeys(password); driver.findElement(By.cssSelector(".submit-btn.login-btn.btn")).click(); } // Search For product @Test public void searchAndSelectProduct() { driver.findElement(By.id("fk-top-search-box")).sendKeys("moto g3"); driver.findElement( By.cssSelector("search-bar-submit.fk-font-13.fk-font-bold")) .click(); // select the first item in the search results String css = ".gd-row.browse-grid-row:nth-of-type(1) > div:nth-child(1)>div>div:nth-child(2)>div>a"; driver.findElement(By.cssSelector(css)).click(); } @Test public void buyAndRemoveFromCart() { driver.findElement( By.cssSelector(".btn-express-checkout.btn-big.current")) .click(); driver.findElement(By.cssSelector(".remove.fk-inline-block")).click(); Alert a = driver.switchTo().alert(); a.accept(); } @Test public void logout() { Actions s = new Actions(driver); WebElement user = driver.findElement(By.partialLinkText(username)); s.moveToElement(user).build().perform(); driver.findElement(By.linkText("Logout")).click(); } @AfterClass public void quit() { driver.close(); } }
स्नैपडील.जावा
package com.suite2; import java.util.concurrent.TimeUnit; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.interactions.Actions; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; public class SnapDeal { WebDriver driver = new FirefoxDriver(); String username = ""; // Change to your username and passwrod String password = ""; String pinCode = ""; // This method is to navigate snapdeal URL @BeforeClass public void init() { driver.manage().window().maximize(); driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); driver.navigate().to("https://www.snapdeal.com"); } // To log in flipkart @Test public void login() { driver.findElement(By.xpath("//button[text()='Login']")).click(); driver.switchTo().frame("loginIframe"); driver.findElement(By.cssSelector("div[onClick='getLoginForm()']")) .click(); driver.findElement(By.id("j_username")).sendKeys(username); driver.findElement(By.id("j_password_login")).sendKeys(password); driver.findElement(By.id("signin_submit")).click(); driver.switchTo().defaultContent(); } // Search For product @Test public void searchAndSelectProduct() { driver.findElement(By.cssSelector(".col-xs-20.searchformInput.keyword")) .sendKeys("iphone 6s"); driver.findElement(By.cssSelector(".sd-icon.sd-icon-search")).click(); // select the first item in the search results String css = ".product_grid_row:nth-of-type(1)>div:nth-child(1)"; driver.findElement(By.cssSelector(css)).click(); } @Test public void buyAndRemoveFromCart() { driver.findElement(By.xpath("//li[contains(text(),'Silver')]")).click(); driver.findElement(By.id("pincode-check")).sendKeys(pinCode); driver.findElement(By.id("buy-button-id")).click(); driver.findElement(By.cssSelector("i[title='Delete Item']")).click(); Alert a = driver.switchTo().alert(); a.accept(); } @Test public void logout() { driver.findElement(By.linkText("START SHOPPING NOW")).click(); Actions s = new Actions(driver); WebElement user = driver.findElement(By.cssSelector(".sd-icon.sd-icon-user")); s.moveToElement(user).build().perform(); driver.findElement(By.linkText("Logout")).click(); } @AfterClass public void quit() { driver.close(); } }
टेस्टएनजी.xml
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite thread-count="1" verbose="1" name="Gmail Suite" annotations="JDK" parallel="tests"> <test name="flipkart"> <classes> <class name="com.suite1.Flipkart"/> </classes> </test> <test name="Myntra"> <classes> <class name="com.suite2.SnapDeal"/> </classes> </test> </suite>
अंतिम परियोजना संरचना नीचे की तरह दिखती है,
चरण 2) समानांतर निष्पादन TestNG
ऊपर दिखाए अनुसार xml फ़ाइल बनाने के बाद, अगले चरण में, हम समानांतर परीक्षण निष्पादित करेंगे। नीचे कोड है।
1) धागा-गिनती: इसका उपयोग संख्या स्क्रिप्ट के आधार पर समानांतर निष्पादन के लिए किया जाता है। यह समानांतर या अनुक्रमिक क्रम में निष्पादित होगा।
2) वाचाल: इसका उपयोग कंसोल में निष्पादन विवरण लॉग करने के लिए किया जाता है। मान 1-10 होना चाहिए। जब आप testng.xml कॉन्फ़िगरेशन फ़ाइल में वर्बोज़ विशेषता का मान बढ़ाएँगे, तो कंसोल विंडो में लॉग विवरण अधिक विस्तृत और स्पष्ट हो जाएगा।
3) नाम: सुइट का नाम। यहाँ यह “जीमेल सुइट” है
4) समानांतर: स्क्रिप्ट को समानांतर चलाने के लिए, मान परीक्षण/क्लास/विधि/सूट हो सकता है। डिफ़ॉल्ट मान है कोई नहीं
testng.xml पर राइट क्लिक करें और run as testing चुनें, सफल होने पर आपको सभी परिणाम दिखाई देंगे
जब आप उपरोक्त कोड निष्पादित करेंगे, तो आपको निम्नलिखित आउटपुट मिलेगा।
आउटपुट:
1) testng.xml में दिया गया सुइट का नाम
2) testng.xml में दिया गया परीक्षण का नाम
3) testng.xml में दिए गए क्लास का नाम
4) .java फ़ाइल में @Test के साथ एनोटेट किए गए विधि नाम
इसी तरह, यह स्नैप डील के लिए भी टेस्ट सूट निष्पादित करेगा।
निष्कर्ष
यहाँ हमने ऊपर दिए गए उदाहरण में देखा है कि इसका उपयोग कैसे किया जाता है टेस्टिंग समानांतर परीक्षण निष्पादित करने के लिए. TestNG एकल कॉन्फ़िगरेशन फ़ाइल (XML) में समानांतर रूप से एकाधिक परीक्षण निष्पादित करने का विकल्प देता है।