TestNG ट्यूटोरियल
⚡ स्मार्ट सारांश
TestNG यह अगली पीढ़ी का है Java परीक्षण ढांचा जो इसके साथ जुड़ता है Selenium संरचित स्वचालन, विस्तृत रिपोर्टिंग और समानांतर निष्पादन के लिए। यह ट्यूटोरियल मुख्य एनोटेशन, प्रोजेक्ट सेटअप आदि को कवर करता है। Eclipseपहला टेस्ट केस लिखना, एचटीएमएल रिपोर्ट तैयार करना और उन्नत पैरामीटर का उपयोग करना।

एचएमबी क्या है? TestNG?
TestNG यह एक ऑटोमेशन टेस्टिंग फ्रेमवर्क है, जिसमें "NG" का अर्थ "नेक्स्ट जेनरेशन" है। TestNG से प्रेरित है JUnit और उपयोग करता है Java परीक्षण प्रवाह को नियंत्रित करने के लिए एनोटेशन (@) का उपयोग किया जाता है। यह कई समस्याओं को दूर करता है। JUnitइसकी पिछली सीमाओं को दूर करने और इसे बनाने के लिए डिज़ाइन किया गया है। अंत-से-अंत परीक्षण आसान है.
- TestNG आप एक सटीक रिपोर्ट तैयार कर सकते हैं और तुरंत देख सकते हैं कि कितने टेस्ट पास हुए, कितने फेल हुए या कितने स्किप किए गए। आप चाहें तो केवल फेल हुए टेस्ट को ही दोबारा चला सकते हैं।
उदाहरण के लिए:
- मान लीजिए आपके पास पाँच टेस्ट केस हैं, जिनमें से प्रत्येक अपने स्वयं के मेथड में लिखा गया है। TestNGतीन सफल होते हैं; चौथा असफल हो जाता है। चौथे को ठीक करने के बाद, आप केवल उसी को दोबारा चलाना चाहते हैं, क्योंकि पहले तीन सफल हो चुके हैं। यह काम सामान्य main() मेथड कोड से करना मुश्किल है।
- TestNG प्रदान करता है एक
testng-failed.xmlमें दायरtest-outputफ़ोल्डर। उस XML फ़ाइल को चलाने से केवल असफल मामलों को ही पुनः निष्पादित किया जाता है।
इसके अलावा, आप इसके फायदों के बारे में भी जानेंगे। TestNGइसमें बताया गया है कि @Test एनोटेशन के साथ टेस्ट मेथड कैसे लिखें और अपनी क्लास को टेस्ट सूट में कैसे बदलें जो निम्नलिखित चरणों से चलता है: Eclipse या कमांड लाइन के माध्यम से।
क्यों का उपयोग करें TestNG साथ में Selenium?
डिफ़ॉल्ट रूप से, Selenium परीक्षणों से अच्छे प्रारूप में परिणाम प्राप्त नहीं होते हैं। TestNG टेस्ट रनर को कनेक्ट करने पर, यह एक संरचित रिपोर्ट तैयार करता है जिसे आप टीम के साथ साझा कर सकते हैं।
बहुत से Selenium उपयोगकर्ता पसंद करते हैं TestNG के ऊपर JUnit इसके व्यापक फीचर सेट के कारण। मुख्य विशेषताएं Selenium यह है:
- उन रिपोर्टों में परीक्षण मामलों की संख्या शामिल होती है जिन्हें चलाया गया, उत्तीर्ण किया गया, असफल किया गया और छोड़ दिया गया।
- आसान समूहping टेस्ट केसों के माध्यम से
testng.xmlफाइल, निष्पादन प्राथमिकताओं के साथ। - लूप का उपयोग किए बिना एक परीक्षण को कई बार दोहराएं
invocationCount. - कई ब्राउज़रों पर कई परीक्षण चलाएँ — क्रॉस-ब्राउज़र परीक्षण समर्थन करें.
- मेवन के साथ सहज एकीकरण, Jenkinsऔर अन्य सीआई टूलिंग।
- Readable उदाहरण के लिए, @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest जैसे एनोटेशन।
- Selenium वेबड्राइवर में कोई नेटिव रिपोर्टिंग सुविधा नहीं है; TestNG यह नीचे दिए गए उदाहरण की तरह एक साफ-सुथरी HTML रिपोर्ट के साथ उस कमी को पूरा करता है।
- TestNG इससे टेस्ट कोड सरल हो जाता है। अब आपको स्टैटिक मेन मेथड की आवश्यकता नहीं है; एनोटेशन तय करते हैं कि क्या चलेगा और कब चलेगा।
- अनहैंडल्ड एक्सेप्शन को सुचारू रूप से संभाला जाता है। TestNGइन्हें पूरी प्रक्रिया को समाप्त किए बिना असफल चरणों के रूप में रिपोर्ट किया जाता है।
के फायदे TestNG के ऊपर JUnit
TestNG यह तीन प्रमुख लाभ प्रदान करता है JUnit:
- एनोटेशन को समझना और उपयोग करना आसान होता है।
- टेस्ट केसों को कम मेहनत से समूहीकृत और प्राथमिकता दी जा सकती है।
- पैरेलल टेस्ट एग्जीक्यूशन को डिफ़ॉल्ट रूप से सपोर्ट किया जाता है।
एनोटेशन क्या है? TestNG?
एनोटेशन में TestNG ये कोड की वे पंक्तियाँ हैं जिन्हें किसी मेथड के ऊपर रखा जाता है ताकि यह नियंत्रित किया जा सके कि उसे कैसे निष्पादित किया जाए। ये हमेशा @ चिह्न से शुरू होते हैं। एक सरल उदाहरण नीचे दिया गया है।
एनोटेशन को इस अनुभाग में विस्तार से समझाया गया है। “में प्रयुक्त एनोटेशन TestNG" इस ट्यूटोरियल में आगे चलकर, इसलिए ऊपर दिया गया उदाहरण केवल अपेक्षाओं को स्पष्ट करने के लिए है। TestNG एनोटेशन कोडिंग और पढ़ने में आसान होते हैं। JUnit ये समतुल्य हैं, और परीक्षण चलाते समय ये आवश्यक हैं। Selenium ग्रिड जहां समानांतर निष्पादन मायने रखता है।
टेस्ट केस कैसे लिखें TestNG
लेखन एक TestNG टेस्ट केस में तीन चरण होते हैं:
- अपना व्यावसायिक तर्क लिखें और उसे रखें TestNG प्रत्येक विधि के ऊपर टिप्पणियाँ।
- क्लास का नाम, ग्रुप का नाम और पैकेज का नाम जैसे मेटाडेटा जोड़ें।
- चलाएं TestNG आप अपने IDE या कमांड लाइन से क्लास का चयन कर सकते हैं।
एक टेस्ट केस बनाएं TestNG एनोटेशन
अब हम अपना पहला टेस्ट केस बनाएंगे TestNG एनोटेशन में Seleniumटेस्ट लिखने से पहले, एक नया सेटअप करें। TestNG में परियोजना Eclipse और इसे नाम दें प्रथमTestNGपरियोजना.
एक नया सेटअप करना TestNG परियोजना
चरण 1) क्लिक करें फ़ाइल > नया > Java परियोजना.
चरण 2) दर्ज प्रथमTestNGपरियोजना प्रोजेक्ट का नाम डालें और क्लिक करें अगला.
चरण 3) आयात करें TestNG पुस्तकालय। क्लिक करें पुस्तकालय टैब और फिर लाइब्रेरी जोड़ें….
चरण 4) में लाइब्रेरी जोड़ें संवाद, चुनें TestNG और क्लिक करें अगला.
चरण 5) क्लिक करें अंत.
TestNG अब यह पुस्तकालयों की सूची में दिखाई देना चाहिए।
चरण 6) उन JAR फ़ाइलों को जोड़ें जिनमें शामिल हैं Selenium एपीआई। ये यहाँ से आते हैं। Java क्लाइंट ड्राइवर डाउनलोड किया गया selenium.dev/downloads.
उस फ़ोल्डर में जाएं जहां Selenium JAR फ़ाइलें संग्रहीत की जाती हैं।
बाहरी JAR फ़ाइलें जोड़ने के बाद, स्क्रीन इस तरह दिखनी चाहिए।
चरण 7) क्लिक करें अंत। नया प्रथमTestNGपरियोजना पैकेज एक्सप्लोरर में दिखाई देता है।
नया कैसे बनाएं TestNG परीक्षण फ़ाइल
प्रोजेक्ट तैयार होने पर, एक नया बनाएं TestNG फ़ाइल.
चरण 1) राइट-क्लिक करें src फ़ोल्डर और चुनें नया > अन्य….
चरण 2) इसका विस्तार करें TestNG फ़ोल्डर, चुनें TestNG कक्षा, और क्लिक करें अगला.
चरण 3) नीचे दिखाए गए मान दर्ज करें और क्लिक करें अंत। Java फ़ाइल का नाम है प्रथमTestNGपट्टिका.
चरण 4) Eclipse उत्पन्न करता है TestNG नीचे टेम्पलेट दिखाया गया है।
अपना पहला कोड लिखना TestNG परीक्षण का मामला
पहला बनाएं परीक्षण का मामला जो शीर्षक को सत्यापित करता है Mercury पर्यटन मुखपृष्ठ.
package firsttestngpackage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.Test;
public class FirstTestNGFile {
public String baseUrl = "https://demo.guru99.com/test/newtours/";
public WebDriver driver;
@Test
public void verifyHomepageTitle() {
System.out.println("launching firefox browser");
// Selenium 4 ships Selenium Manager, so the driver path is no longer required.
driver = new FirefoxDriver();
driver.get(baseUrl);
String expectedTitle = "Welcome: Mercury Tours";
String actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, expectedTitle);
driver.quit();
}
}
ध्यान देने योग्य बातें:
- TestNG जरूरत नहीं है
main()विधि. - विधियों का स्थिर होना आवश्यक नहीं है।
- RSI @परीक्षा एनोटेशन चिह्न
verifyHomepageTitle()एक परीक्षण मामले के रूप में। - टिप्पणियाँ इसमें मौजूद हैं
org.testng.annotations.*पैकेज. - RSI जोर से कक्षा
org.testng.Assertड्राइव सत्यापन।
आप एक ही कॉलम में कई @Test एनोटेशन रख सकते हैं। TestNG फ़ाइल। हम उस पर चर्चा करेंगे। “में प्रयुक्त एनोटेशन TestNG" अनुभाग।
परीक्षण चला रहा है
फ़ाइल पर राइट-क्लिक करें और इसे रन करें। TestNG परीक्षण. Eclipse यह दो आउटपुट देता है — कंसोल विंडो में एक टेक्स्ट परिणाम और एक ग्राफिकल परिणाम। TestNG परिणाम विंडो.
रिपोर्ट की जाँच द्वारा बनाया गया TestNG
कंसोल विंडो टेक्स्ट-आधारित सारांश प्रदान करती है जबकि TestNG परिणाम विंडो में एक ग्राफिकल दृश्य दिखाया गया है।
HTML रिपोर्ट तैयार करना
TestNG यह पूर्ण एचटीएमएल रिपोर्ट भी तैयार कर सकता है।
चरण 1) चलने के बाद प्रथमTestNGपट्टिकाप्रोजेक्ट पर राइट-क्लिक करें और चुनें ताज़ा करना.
चरण 2) A परीक्षण-आउटपुट एक फ़ोल्डर दिखाई देगा। उसे खोलें और उसमें ढूंढें। index.html — सबसे हालिया रन की HTML रिपोर्ट।
चरण 3) Doubleक्लिक करें index.html इसे अंदर खोलने के लिए Eclipse's ब्राउज़र। अगली बार चलाने के बाद रीफ़्रेश करने के लिए F5 दबाएँ।
एनोटेशन का उपयोग किया गया TestNG
आप @Test एनोटेशन देख चुके हैं। इस अनुभाग के शेष भाग में सबसे उपयोगी उन्नत एनोटेशन शामिल हैं।
एकाधिक परीक्षण मामले
एक एकल TestNG एक फ़ाइल में कई @Test एनोटेशन हो सकते हैं। डिफ़ॉल्ट रूप से, @Test एनोटेशन वाले मेथड वर्णमाला क्रम में निष्पादित होते हैं। नीचे दिए गए कोड में, मेथड c_test, a_test, तथा b_test स्रोत क्रम की परवाह किए बिना वर्णानुक्रम में चलाएँ।
कोड चलाएं और खोलें index.html। क्लिक करें कालानुक्रमिक दृश्य.
पैरामीटर्स
डिफ़ॉल्ट क्रम को ओवरराइड करने के लिए, इसका उपयोग करें priority पैरामीटर। पैरामीटर ऐसे कीवर्ड होते हैं जो एनोटेशन के व्यवहार को संशोधित करते हैं।
- एक मान निर्दिष्ट करें
=. - नीचे दिखाए गए अनुसार, एनोटेशन के ठीक बाद कोष्ठक में पैरामीटर को लपेटें।
TestNG यह @Test एनोटेशन को सबसे कम प्राथमिकता से लेकर सबसे अधिक प्राथमिकता तक निष्पादित करता है। प्राथमिकता संख्याएँ लगातार होना आवश्यक नहीं है।
एचटीएमएल रिपोर्ट इस बात की पुष्टि करती है कि विधियाँ बढ़ती प्राथमिकता क्रम में निष्पादित की गईं।
एकाधिक पैरामीटर
के अतिरिक्त priority, @Test स्वीकार करता है alwaysRun पैरामीटर (सही या गलत)। एक ही एनोटेशन में दो या दो से अधिक पैरामीटर का उपयोग करने के लिए, उन्हें अल्पविराम से अलग करें:
@Test(priority = 0, alwaysRun = true)
@BeforeTest और @AfterTest
| @ सबसे पहले | इस एनोटेशन के अंतर्गत विधियाँ चलती हैं पहले टेस्ट केस से पहले TestNG पट्टिका. |
| @ बाद में | इस एनोटेशन के अंतर्गत विधियाँ चलती हैं सभी परीक्षण मामलों के बाद TestNG फ़ाइल समाप्त. |
नीचे दिए गए कोड पर विचार करें.
package firsttestngpackage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
public class FirstTestNGFile {
public String baseUrl = "https://demo.guru99.com/test/newtours/";
public WebDriver driver;
@BeforeTest
public void launchBrowser() {
System.out.println("launching firefox browser");
driver = new FirefoxDriver();
driver.get(baseUrl);
}
@Test
public void verifyHomepageTitle() {
String expectedTitle = "Welcome: Mercury Tours";
String actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, expectedTitle);
}
@AfterTest
public void terminateBrowser() {
driver.quit();
}
}
तालिका और कोड से, हम अनुमान लगा सकते हैं कि अनुक्रम इस प्रकार होगा:
- प्रथम —
launchBrowser() - दूसरा —
verifyHomepageTitle() - तीसरा —
terminateBrowser()
स्रोत फ़ाइल में एनोटेशन ब्लॉकों का स्थान उनके निष्पादन क्रम को प्रभावित नहीं करता है। नीचे दिखाए अनुसार विधियों को पुनर्व्यवस्थित करने का प्रयास करें।
package firsttestngpackage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
public class FirstTestNGFile {
public String baseUrl = "https://demo.guru99.com/test/newtours/";
public WebDriver driver;
@AfterTest // Jumbled
public void terminateBrowser() {
driver.quit();
}
@BeforeTest // Jumbled
public void launchBrowser() {
System.out.println("launching firefox browser");
driver = new FirefoxDriver();
driver.get(baseUrl);
}
@Test // Jumbled
public void verifyHomepageTitle() {
String expectedTitle = "Welcome: Mercury Tours";
String actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, expectedTitle);
}
}
कोड चलाएं और परिणाम सत्यापित करें।
@BeforeMethod और @AfterMethod
| @BeforeMethod | इस एनोटेशन के अंतर्गत विधियाँ चलती हैं प्रत्येक परीक्षण विधि से पहले. |
| @ आफ्टरमेथोड | इस एनोटेशन के अंतर्गत विधियाँ चलती हैं प्रत्येक परीक्षण विधि के बाद. |
In Mercury टूर्स, मान लीजिए कि हम होमपेज से पहुंचने वाले दो लक्ष्य पृष्ठों के शीर्षकों को सत्यापित करना चाहते हैं।
टेस्ट की प्रक्रिया इस प्रकार है:
- होमपेज खोलें और उसके शीर्षक की पुष्टि करें।
- रजिस्टर पर क्लिक करें और उसके लक्ष्य पृष्ठ का शीर्षक सत्यापित करें।
- होमपेज पर वापस जाएं और शीर्षक की पुष्टि करें।
- समर्थन पर क्लिक करें और उसके लक्ष्य पृष्ठ का शीर्षक सत्यापित करें।
- होमपेज पर वापस जाएं और शीर्षक को दोबारा सत्यापित करें।
नीचे दिया गया कोड दर्शाता है कि @BeforeMethod और @AfterMethod दोहराए जाने वाले चरणों को कैसे संभालते हैं।
package firsttestngpackage;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
public class FirstTestNGFile {
public String baseUrl = "https://demo.guru99.com/test/newtours/";
public WebDriver driver;
public String expected = null;
public String actual = null;
@BeforeTest
public void launchBrowser() {
System.out.println("launching firefox browser");
driver = new FirefoxDriver();
driver.get(baseUrl);
}
@BeforeMethod
public void verifyHomepageTitle() {
String expectedTitle = "Welcome: Mercury Tours";
String actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, expectedTitle);
}
@Test(priority = 0)
public void register() {
driver.findElement(By.linkText("REGISTER")).click();
expected = "Register: Mercury Tours";
actual = driver.getTitle();
Assert.assertEquals(actual, expected);
}
@Test(priority = 1)
public void support() {
driver.findElement(By.linkText("SUPPORT")).click();
expected = "Under Construction: Mercury Tours";
actual = driver.getTitle();
Assert.assertEquals(actual, expected);
}
@AfterMethod
public void goBackToHomepage() {
driver.findElement(By.linkText("Home")).click();
}
@AfterTest
public void terminateBrowser() {
driver.quit();
}
}
टेस्ट चलाने के बाद, TestNG नीचे अनुक्रम की रिपोर्ट दी गई है।
संक्षेप में: सेटअप के चरणों को अंदर रखें @BeforeMethod और सफाई या नेविगेशन रीसेट अंदर @ आफ्टरमेथोड इसलिए प्रत्येक टेस्ट केस एक ज्ञात स्थिति से शुरू और समाप्त होता है।
का सारांश TestNG एनोटेशन
- @BeforeSuite: यह टेस्ट सूट में मौजूद सभी टेस्ट से पहले चलता है।
- @आफ्टरसुइट: यह सूट में सभी परीक्षणों के बाद चलता है।
- @BeforeTest: किसी भी टेस्ट मेथड के चलने से पहले चलता है जो क्लास के अंदर मौजूद होता है। टैग।
- @आफ्टरटेस्ट: यह किसी क्लास के अंदर मौजूद सभी टेस्ट मेथड्स के बाद चलता है। टैग।
- @BeforeGroups: यह किसी भी सूचीबद्ध समूह से संबंधित पहले परीक्षण विधि से ठीक पहले चलता है।
- @आफ्टरग्रुप्स: यह सूचीबद्ध समूहों में से किसी एक से संबंधित अंतिम परीक्षण विधि के तुरंत बाद चलता है।
- @कक्षा से पहले: यह वर्तमान क्लास में पहले टेस्ट मेथड से पहले चलता है।
- @क्लास के बाद: यह वर्तमान क्लास में सभी टेस्ट मेथड्स के बाद चलता है।
- @BeforeMethod: यह प्रत्येक परीक्षण विधि से पहले चलता है।
- @AfterMethod: यह प्रत्येक परीक्षण विधि के बाद चलता है।
- @परीक्षा: यह विधि को एक परीक्षण मामले के रूप में चिह्नित करता है।

































