testng annotations listeners
यह ट्यूटोरियल टेस्टएनजी एनोटेशन और श्रोताओं के विभिन्न प्रकारों की व्याख्या करता है। तुम भी उदाहरण के साथ TestNG एनोटेशन और श्रोताओं का उपयोग करना सीखेंगे:
यहां, हम TestNG एनोटेशन का उपयोग करके एक मूल TestNG प्रोग्राम चलाएंगे और TestNG श्रोताओं की भूमिका भी देखेंगे और परीक्षण में उनका उपयोग कैसे करें।
=> ईज़ी टेस्टएनजी प्रशिक्षण श्रृंखला के माध्यम से पढ़ें।
आप क्या सीखेंगे:
TestNG एनोटेशन क्या हैं?
ये प्रोग्राम या व्यावसायिक तर्क हैं जो विधियों के प्रवाह को नियंत्रित करने में उपयोग किए जाते हैं। वे TestNG में बहुत महत्वपूर्ण भूमिका निभाते हैं। ये टिप्पणियां आवश्यकताओं के अनुसार प्रत्येक परियोजना में भिन्न होती हैं। विभिन्न आवश्यकताओं के बावजूद एनोटेशन का प्रवाह हर कार्यक्रम में समान रहता है।
TestNG एनोटेशन के विभिन्न प्रकार हैं जो TestNG को JUnit की तुलना में आसान और बेहतर बनाते हैं। इनमें से प्रत्येक एनोटेशन टेस्टएनजी में एक विशेष कार्यक्रम में चलेगा।
TestNG में एनोटेशन के प्रकार
नीचे दिए गए एनोटेशन और उनकी विशेषताओं की सूची दी गई है जो टेस्टएनजी में उपयोग की जाती हैं। आइए उन्हें और उनके उपयोग के बारे में विस्तार से जानें।
इससे पहले
- @ बीजपत्र: सुइट में सभी परीक्षण चलाने से पहले इस पद्धति को निष्पादित किया जाएगा।
- @ शीर्ष: सुइट में प्रत्येक परीक्षण खंड घोषित होने से पहले इस पद्धति को निष्पादित किया जाएगा।
- @कक्षा से पहले: इस विधि को वर्तमान कक्षा में पहले परीक्षण विधि से पहले निष्पादित किया जाएगा।
- @BeforeMethod: प्रत्येक परीक्षण विधि से पहले इस पद्धति को निष्पादित किया जाएगा।
- @BeforeGroups: निर्दिष्ट समूह के किसी भी परीक्षण विधि का उल्लेख करने से पहले इस विधि को निष्पादित किया जाएगा।
- @परीक्षा : परीक्षण के एक भाग के रूप में एक वर्ग या एक विधि को चिह्नित करता है। या हम कह सकते हैं कि यह परीक्षण विधि के रूप में एक विधि बनाता है।
उपरांत
- @ आफ्टरसाइट: सुइट में सभी परीक्षण चलने के बाद इस पद्धति को निष्पादित किया जाएगा।
- @ आफ्टरेस्ट: सुइट में प्रत्येक परीक्षण अनुभाग घोषित होने के बाद इस पद्धति को निष्पादित किया जाएगा।
- @क्लास के बाद: इस पद्धति को कक्षा के अंतिम परीक्षण विधि के बाद निष्पादित किया जाएगा।
- @ आफ्टरमेथोड: प्रत्येक परीक्षण विधि के निष्पादित होने के बाद इस विधि को निष्पादित किया जाएगा।
- @ परिणाम: निर्दिष्ट समूह के अंतिम परीक्षण विधि के निष्पादित होने के बाद इस विधि को निष्पादित किया जाएगा।
एनोटेशन का कार्य प्रवाह
जब हम TestNG.xml फ़ाइल निष्पादित करते हैं, तो TestNG एनोटेशन को निम्नलिखित अनुक्रम में निष्पादित किया जाएगा:
सुइट से पहले-> टेस्ट से पहले-> क्लास से पहले-> मेथड से पहले-> टेस्ट -> मेथड के बाद-> क्लास के बाद-> टेस्ट के बाद-> बाद में
@BeforeSuite @BeforeTest @BeforeClass @BeforeMethod @Test @AfterMethod @AfterClass @AfterTest @AfterSuite
@परीक्षा बहुत सी अन्य विशेषताएं हैं जो हमारे परीक्षण मामलों को अधिक प्रभावी ढंग से निष्पादित करने में हमारी सहायता करती हैं।
नीचे उदाहरण के साथ विशेषताओं और उनके विवरणों के प्रकार हैं।
(1) हमेशा जब सही पर सेट किया जाता है, तो यह विधि तब भी चलेगी जब यह उस विधि पर निर्भर करता है जो विफल हो गया है।
उदाहरण: परीक्षण (हमेशा सही = सत्य)
# 2) डेटाप्रोवाइडर : यह इस विधि के लिए डेटा प्रदाता का नाम दिखाता है। इसमें केवल अर्थात् नाम का गुण है। हम इसका उपयोग तब कर सकते हैं जब हम अपने सॉफ़्टवेयर को इनपुट समय या रन समय पर डेटा के कई सेटों के साथ परीक्षण करते हैं। इसे डेटा-चालित परीक्षण के रूप में भी जाना जाता है। हम इस विशेषता का उपयोग करके डेटा-संचालित परीक्षण कर सकते हैं।
उदाहरण: @ दाताप्रोवाइडर (नाम = 'टेस्टडेटा')
# 3) dataProviderClass : यह विशेषता आपको डेटा प्रदाता वर्ग को निर्दिष्ट करने की अनुमति देगी जिसमें डेटा प्रदाता शामिल होगा जो @Test पद्धति का उपयोग कर रहा होगा।
उदाहरण: @ टेस्ट (डेटाप्रोवाइडर = 'क्लाइंट डेटा टेस्ट', डेटाप्रोवाइडरक्लास = क्लाइंटडेलटेस्ट.क्लासर)
# 4 )OnOnGroups निर्भर करता है : यह विशेषता समूहों की सूची पर निर्भर करती है यानी परीक्षण विधि निष्पादन तब शुरू होगी जब आश्रित समूह निष्पादित होंगे।
ध्यान दें : यदि समूहों में कोई भी परीक्षण, जो असफल होने पर निर्भर है, तो यह उस परीक्षा को छोड़ देगा।
नीचे उदाहरण है:
@Test(groups= “homepage”) public void homepageTest(){ System.out.println('Home Page displayed successfully'); } @Test(groups= “transactionspage”) Public void transactionpageTest(){ System.out.println(“Transaction Page displayed successfully”); } @Test(dependsOnGroups={“homepage”, “transactionspage”}) public void dependOnGroupTest1(){ System.out.println(“dependency tested successful”);
# 5) निर्भरऑनमेथोड्स : यह एनोटेशन विधियों की सूची पर निर्भर करता है। इसका मतलब यह है कि परीक्षण विधि निष्पादन शुरू कर देगी जब आश्रित विधियों को निष्पादित किया जाएगा।
ध्यान दें : यदि आश्रितों के तरीकों में कोई भी परीक्षण विफल रहता है, तो यह उस परीक्षा को छोड़ देगा।
उदाहरण:
@Test public void loginTest() { System.out.println(“Login Tested Successfully”); } @Test public void homepageTest() { System.out.println(“Home Page Tested Successfully”); } @Test(dependsOnMethods={“ loginTest”, “homepageTest”}) public void smokeTest() { System.out.println(“Smoke Tests were done successfully”);
# 6) हमेशा = सच्चा: हम एक परीक्षण विधि पर विशेषताओं को सच करने के लिए सेट कर सकते हैं, और यह परीक्षण को तब भी निष्पादित करने के लिए मजबूर करेगा, जब समूह में कुछ परीक्षण विफल होने पर निर्भर करते हैं।
उदाहरण के लिए:
@Test public void launchAppTest() { System.out.println(“Application launched Successfully”); } @Test public void loginAppTest() { System.out.println(“Application logged in Successfully”); } @Test(dependsOnMethods={“launchAppTest”, “loginAppTest”}, alwaysRun=true) public void smokeTest() { System.out.println(“Smoke Test were done successfully”); }
# 7) विवरण : यह विधि के लिए विवरण प्रदान करता है। आम तौर पर, इसमें एक-पंक्ति सारांश होता है।
उदाहरण:
@Test(description = “Regression Test Summary”)
# 8) सक्षम : यह विशेषता निर्दिष्ट करने में मदद करती है कि क्या हम वर्तमान सूट / क्लास में विशेष परीक्षण विधि को चलाना / निष्पादित करना चाहते हैं या नहीं। कभी-कभी हम कुछ कारणों से कुछ परीक्षण नहीं चलाना चाहते हैं जैसे कि आवश्यकता / फ़ंक्शन अक्सर बदलते रहते हैं और हम उस विशेष फ़ंक्शन के लिए वर्तमान रन को परेशान नहीं करना चाहते हैं।
उन मामलों में, हम केवल इस सुविधा को @Test (सक्षम = गलत) के रूप में सेट करके उस विशेष परीक्षण को अनदेखा / अक्षम कर सकते हैं।
उदाहरण:
@Test(enabled = false) public void imageTest() {//We have disabled this test by giving enabled=false System.out.println(“Image was tested successfully()”); }
# 9) अपेक्षित अपवाद : यह विशेषता अपवादों की सूची दिखाती है कि परीक्षण विधि रन टाइम में फेंकने वाली है। यदि विधि के लिए कोई अपवाद या कोई अन्य अपवाद नहीं फेंका जाता है, तो परीक्षण को विफलता के रूप में चिह्नित किया जाता है।
उदाहरण:
@Test(expectedExceptions = ArithmeticException.class) public void numericTest() { int i = 1 / 0; }
# 10) समूह : इस विशेषता का उपयोग उन समूहों को निर्दिष्ट करने के लिए किया जाता है जो परीक्षण विधि से संबंधित हैं।
@Test(groups = {“Regression”}) Public void runRegressionTest(){ System.out.println(“test runs were successful”); }
# 11) प्राथमिकता : यह परीक्षण विधियों को प्राथमिकता देने में मदद करता है, जबकि डिफ़ॉल्ट प्राथमिकता 0 से शुरू होती है और परीक्षण आरोही क्रम में निष्पादित किए जाते हैं।
उदाहरण:
@Test Public void launchApp(){ System.out.println(“Application was launched successfully”): } @Test (priority = 1) Public void loginApp(){ System.out.println(“Application logged in successfully”); } @Test (priority = 2) Public void checkTrans(){s System.out.println(“Checked Transactions successfully”); }
परिणाम: नीचे दिए गए परिणाम प्राथमिकता के अनुसार हैं, भले ही कोई संख्या पहले परीक्षण को नहीं दी गई थी, यह डिफ़ॉल्ट रूप से 0 के रूप में अपनी प्राथमिकता लेता है और निष्पादन आरोही क्रम में किया गया था।
उत्तीर्ण: launchApp
उत्तीर्ण: loginApp
उत्तीर्ण: checkTrans
# 12) टाइमआउट : यह विशेषता परीक्षण के लिए टाइमआउट मान निर्दिष्ट करने में मदद करती है (आमतौर पर मिलीसेकंड के रूप में उपयोग की जाती है)। यदि परीक्षण निर्दिष्ट समय से अधिक मूल्य लेता है, तो परीक्षण विफल के रूप में चिह्नित है। हम इस टाइमआउट का उपयोग प्रदर्शन परीक्षण करने के लिए कर सकते हैं, यह सुनिश्चित करने के लिए कि विधि उचित समय के भीतर वापस आ रही है।
@Test(timeOut = 500) public void timeTest() throws InterruptedException { Thread.sleep(400); System.out.println(“Time test method successfully tested”); }
# 13) मंगलाचरण : यह विशेषता यह निर्धारित करने में मदद करती है कि परीक्षण विधि कितनी बार लागू की जानी चाहिए।
@Test(invocationCount = 5) public void loginTest() { WebDriver driver = new FirefoxDriver(); driver.get('http://www.google.com'); System.out.println('Page Title is ' + driver.getTitle()); driver.quit();
आउटपुट:
पेज का शीर्षक Google है
पेज का शीर्षक Google है
पेज का शीर्षक Google है
पेज का शीर्षक Google है
पेज का शीर्षक Google है
# 14) मंगलाचरण यह अधिकतम समय (मिलीसेकंड का नहीं) है जो इस परीक्षण को सभी आह्वान की गणना के लिए लेना चाहिए। इस पद्धति का उपयोग आह्वान गणना पद्धति के साथ किया जाना चाहिए अन्यथा इसे अनदेखा कर दिया जाएगा।
उदाहरण:
@Test(invocationCount=4, invocationTimeOut=4000) public void loginTest(){ Thread.sleep(1000); System.Out.println(“login Test”); }
उपरोक्त उदाहरण से पता चलता है कि इस परीक्षण को निष्पादित करने के लिए कुल 4 सेकंड का समय लगेगा और हर बार परीक्षण को चलाने / चलाने में 1 सेकंड का समय लगेगा।
# 15) @ डाटाप्रोविदेर : यह विधि एक परीक्षण विधि के लिए डेटा की आपूर्ति करने में मदद करती है। सबसे पहले, हमें @DataProvider द्वारा एनोटेट की गई विधि की घोषणा करनी होगी और फिर @Test एनोटेशन में 'DataProvider' विशेषता का उपयोग करके आवश्यक परीक्षण विधि में इस पद्धति का उपयोग करना होगा।
डेटा प्रदाता वस्तुओं की एक सरणी देता है, विशेष रूप से एक दो-आयामी ऑब्जेक्ट सरणी () ()। पहला सरणी एक डेटा सेट का प्रतिनिधित्व करता है और दूसरा सरणी में पैरामीटर होता है।
@DataProvider (नाम = 'परीक्षण') - यहाँ, नाम डेटा प्रदाता के नाम का प्रतिनिधित्व करता है। यदि नाम नहीं दिया गया है, तो, DataProvider का नाम स्वचालित रूप से विधि के नाम पर सेट हो जाएगा।
उदाहरण:
@DataProvider(name = “Name”) public object()() credentials(){ return new object ()() { { “Mohan”, “23”}, { “Shikhar”, “30”} }; } //Now we are calling the Data Provider object by its name @Test(DataProvider = “Name”) Public void testData(String sName, int age) { System.out.println(“Data is: (Name, age)”); }
# 16) @ फ़ैक्ट्री : इसका उपयोग उन वस्तुओं को प्रदान करने के लिए एक कारखाने के रूप में एक विधि को निर्दिष्ट करने के लिए किया जाता है जो TestNG द्वारा अपने परीक्षण वर्गों के लिए उपयोग किए जाते हैं। @ फ़ैक्टरी का उपयोग करके, हम रन समय पर डायनामिक परीक्षण बना सकते हैं और इसे एक सरणी ऑब्जेक्ट वापस करना चाहिए।
उदाहरण:
इसे बेहतर समझने के लिए एक उदाहरण लेते हैं। हम दो कक्षाएं बनाएंगे यानी FactorySample.Java और FactoryTest.Java
FactorySample.Java
public class FactorySample { @Test public void googleTest() { System.out.println(“Google was launched successfully”); } @Test public void gmailLogin() { System.out.println(“Gmail logged in successfully”); }
FactoryTest.Java
public class FactoryTest { @Factory() public Object() testFact() { FactorySample fs = new FactorySample(2); fs(0) = new googleTest(); fs(1) = new gmailLogin(); return fs; } }
उत्पादन : Google को सफलतापूर्वक लॉन्च किया गया था
जीमेल सफलतापूर्वक लॉग इन किया
@Factory और @DataProvider एनोटेशन के बीच अंतर
दोनों एनोटेशन के बीच एक बुनियादी अंतर है। इन दो एनोटेशन के बारे में बहुत भ्रम है जैसे इनका उपयोग कहां और क्यों करना है?
आइए जवाब ढूंढते हैं।
@डेटा प्रदाता: यह एनोटेशन विशेष परीक्षण विधि को मापेगा और परीक्षण को विशिष्ट संख्या में निष्पादित करेगा। इस पद्धति द्वारा उपलब्ध कराए गए आंकड़ों के आधार पर।
उदाहरण के लिए, यदि दो पैरामीटर हैं, तो परीक्षण विधि को दो बार निष्पादित किया जाएगा। उदाहरण के लिए, यदि हम प्रत्येक बार उपयोगकर्ता नाम और पासवर्ड के विभिन्न सेटों के साथ साइट पर लॉगइन करना चाहते हैं, तो यह उपयोगी है क्योंकि हमें परीक्षण करने के लिए पैरामीटर प्रदान करना है।
@ फैक्ट्री : यह उस वर्ग के एक अलग उदाहरण का उपयोग करते हुए परीक्षण वर्ग फ़ाइल के अंदर मौजूद सभी परीक्षण विधियों को निष्पादित करेगा। यह उपयोगी है अगर हम टेस्ट क्लास को किसी भी समय चलाना चाहते हैं।
उदाहरण के लिए , अगर हमें किसी एप्लिकेशन या वेबसाइट के लॉगिन फ़ंक्शन का परीक्षण करना है और जैसा कि हमें कई बार इस परीक्षण को चलाना है, तो @Factory का उपयोग करना बेहतर है जहां हम परीक्षण के कई उदाहरण बना सकते हैं और परीक्षण चला सकते हैं।
आइए अंतर जानने के लिए इन उदाहरणों पर एक नज़र डालें।
@DataProvider उदाहरण :
@DataProvider public Object()() message(){ return new Object ()(){{“Mihir” , new Integer (145632)}, {“Kumar”, new Integer (28242)}}; } @Test (dataProvider=”message”) public void PrintMsg(String name, Integer id){ System.out.println(“Names are: “+name+” “+id); }
ध्यान दें : उपरोक्त कार्यक्रम में हमने दो आंकड़े दिए हैं और कार्यक्रम का परिणाम होगा:
नाम हैं: मिहिर 145632
नाम हैं: कुमार २2२४२
इससे पता चलता है कि यदि हम संदेश पद्धति में डेटा की संख्या बढ़ाते हैं, तो प्रिंट विधि कई बार उसी संख्या को निष्पादित करेगी।
@ फ़ैक्टरी उदाहरण :
TestNG Factory बहुत उपयोगी है जब हमें एक ही टेस्ट क्लास का उपयोग करके कई टेस्ट क्लास चलाना है।
एक उदाहरण देखते हैं।
इसके लिए, हमें उनके अंदर कुछ परीक्षण विधियों के साथ दो परीक्षण कक्षाएं बनानी होंगी।
टेस्टडाटा 1:
public class TestData1 { @Test public void testData1() { System.out.println('Test data 1 successfully tested'); } }
टेस्टडेटा 2:
public class TestData2 { @Test public void testData2() { System.out.println('Test data 2 successfully tested'); } }
अब हमें @ फैक्टिंग विधि को परिभाषित करना होगा जो उपरोक्त परिभाषित वर्गों की एक वस्तु सरणी देता है।
फैक्टरी कार्यक्रम:
public class TestNGFactory { @Factory() public Object() getTestClass() { Object() tests = new Object(2); tests(0) = new Test Data 1(); tests(1) = new Test Data 2(); return tests; } }
आउटपुट:
टेस्ट 1 परीक्षण विधि
Test2 परीक्षण विधि
PASSED: test1
PASSED: test2
TestNG श्रोता प्रकार के साथ
सरल शब्दों में, श्रोता सेलेनियम लिपि में परिभाषित घटना को सुनते हैं और उसके अनुसार व्यवहार करते हैं। मुख्य उद्देश्य लॉग बनाना और TestNG रिपोर्ट को अनुकूलित करना है।
TestNG में कई तरह के श्रोता उपलब्ध हैं।
उदाहरण के लिए , IAnationationTransformer, IAnnotationTransformer2, IConfigurable, IConfigurationListener2, IConfigurationListener2, IExecutionListener, IHookable, IInvokedMethodListener2, IInvokedMethodListener2, IMethfiguration
हालाँकि, जब परीक्षण की बात आती है, तो हम उनमें से कुछ का ही उपयोग करते हैं जैसा कि नीचे चर्चा की गई है:
(1) इसुइलाइटिस्टनर
यह टेस्ट स्वीट्स के लिए एक श्रोता है। इसमें दो विधियाँ शामिल हैं अर्थात् ऑनस्टार्ट () तथा ऑनफिश () ।
जब भी हम इस श्रोता को लागू करते हैं, तो यह गारंटी देगा कि एंड-यूज़र TestNG सूट चलाने से पहले और बाद में onStart () और onFinish () के तरीकों को लागू करेगा।
विधि का विवरण:
शून्य onStart (ISuite सुइट) : सुइट रनर शुरू होने से पहले यह विधि लागू की जाती है।
शून्य चालू (ISuite सुइट) : सुइट रनर द्वारा सभी परीक्षण सूट चलाने के बाद यह विधि लागू की जाती है।
उदाहरण:
@Override public void onStart(ISuite suite) { System.out.println(“TestNG Suite Starts”); } @Override public void onFinish(ISuite suite) { System.out.println(“TestNG Suite Finishes”); }
# 2) ITLListener
यह श्रोता ISuiteListener की तरह ही काम करता है। हालांकि, अंतर केवल इतना है कि यह टेस्ट से पहले और बाद में कॉल करता है न कि सुइट। यह टेस्ट रनिंग के लिए एक श्रोता है और इस श्रोता के इसमें सात तरीके हैं।
(i) ऑनस्टार्ट () :यह विधि परीक्षण वर्ग के तुरंत बाद और किसी भी कॉन्फ़िगरेशन विधि को कहा जाता है के बाद लागू किया जाता है।
उदाहरण:
@Override public void onStart(ITestContext context) { System.out.println(“Context Name = ” + context.getName()); }
(ii) ऑनफिश () :सभी परीक्षण चलाने के बाद और सभी कॉन्फ़िगरेशन विधियों को कॉल करने के बाद इस विधि को लागू किया जाता है।
उदाहरण:
public void onFinish(ITestContext context) { System.out.println(context.getPassedTests()); }
(iii) onTestStart () :यह विधि प्रत्येक बार लागू होने से पहले परीक्षण के लिए लागू होगी। ITestResult केवल वर्ग, विधि, प्रारंभ मिली और स्थिति के संदर्भों से आंशिक रूप से भरा है।
तरीका: शून्य onTestStart (ITestResult परिणाम)
उदाहरण:
@Override public void onTestStart(ITestResult result) { System.out.println('Test Started…'+result.getStartMillis()); }
(iv) onTestSuccess () :यह विधि हर बार एक परीक्षण के सफल होने पर आह्वान की जाती है।
तरीका: शून्य onTestSuccess (ITestResult परिणाम)
उदाहरण:
@Override public void onTestSuccess(ITestResult result) { System.out.println('Test Success. '+result.getEndMillis()); }
(v) onTestFailure () :यह विधि प्रत्येक बार जब परीक्षण में विफल रहता है, तब इसे लागू किया जाता है।
तरीका: शून्य onTestFailure (ITestResult परिणाम)
उदाहरण:
@Override public void onTestFailure(ITestResult result) { System.out.println('Test Failed. '+result.getTestName()); }
(vi) onTestSkipped () :इस विधि को हर बार जब एक परीक्षा छोड़ दी जाती है, तब लागू किया जाता है।
तरीका: शून्य onTestSkipped (ITestResult परिणाम)
उदाहरण:
@Override public void onTestSkipped(ITestResult result) { System.out.println('Test Skipped. '+result.getTestName()); }
(vii) onTestFailedButWithinSuccessPercentage :इस विधि को हर बार तब लागू किया जाता है जब कोई विधि विफल हो जाती है लेकिन सफलता प्रतिशत के साथ एनोटेट किया जाता है और विफलता इसे सफलता प्रतिशत के भीतर रखती है।
तरीका: शून्य onTestFailedButWithinSuccessPercentage (ITestResult परिणाम)
उदाहरण:
@Override public void onTestFailedButWithinSuccessPercentage(ITestResult iTestResult) { System.out.println('Test failed but it is in defined success ratio ' + getTestMethodName(iTestResult)); }
# 3) IExecutionListener
यह एक श्रोता है जो एक TestNG रन की शुरुआत और अंत पर नज़र रखता है। इसकी दो विधियाँ हैं अर्थात् onExecutionStart () तथा onExecutionFinish () ।
TestNG मुकदमा चलाने से पहले onExecutionStart () विधि को कॉल किया जाता है और TestNG को सभी परीक्षण सूटों के चलाने के साथ चालू करने के बाद onExecutionFinish () विधि कहा जाता है।
तरीका:
शून्य onExecutionStart ()
शून्य onExecutionFinish ()
उदाहरण:
@Override public void onExecutionStart() { System.out.println('TestNG is going to start'); } @Override public void onExecutionFinish() { System.out.println('TestNG is finished'); }
# 4) IInvokedMethodListener
यह एक श्रोता है जो टेस्टनेग द्वारा एक विधि से पहले और बाद में आह्वान किया जाता है। यह श्रोता केवल विन्यास और परीक्षण के तरीकों के लिए लगाया जाता है। इसकी केवल दो विधियाँ हैं अर्थात् InInvocation और इससे पहले कि Invocation।
- पूर्वाभास: प्रत्येक विधि से पहले आह्वान करें।
- बाद में: प्रत्येक विधि के बाद आह्वान करें।
तरीका:
विचलन से पहले शून्य (IInvokedMethod विधि, ITestResult testResult)
शून्य के बाद शून्य (IInvokedMethod विधि, ITestResult testResult)
उदाहरण:
@Override public void beforeInvocation(IInvokedMethod method, ITestResult testResult) { System.out.println('before invocation of ' + method.getTestMethod().getMethodName()); } @Override public void afterInvocation(IInvokedMethod method, ITestResult testResult) { System.out.println('after invocation of ' + method.getTestMethod().getMethodName()); }
# 5) IMethodInterceptor
इस वर्ग का उपयोग उन परीक्षण विधियों की सूची को बदलने के लिए किया जाता है जो TestNG चलने वाली हैं। इस पद्धति का उपयोग करके हम परीक्षण विधियों की सूची को फिर से व्यवस्थित कर सकते हैं।
यह केवल उन विधियों पर लागू होता है, जिन पर कोई आश्रित नहीं होता है और वे विधियाँ जो किसी अन्य परीक्षण विधियों पर निर्भर नहीं होती हैं, मापदंडों में पारित की जाएंगी। यह इंटरफ़ेस परीक्षण विधियों की एक सूची लौटाएगा जिसे चलाने की आवश्यकता है लेकिन एक अलग तरीके से।
तरीका:
c फ्रेशर्स के लिए इंटरव्यू प्रश्न और उत्तर
java.util.List इंटरसेप्ट (java.util.List विधियाँ, ITestContext संदर्भ)
उदाहरण:
@Override public Listintercept(Listmethods, ITestContext context) { List result = new ArrayList(); for (IMethodInstance m : methods) { Test test = m.getMethod().getMethod().getAnnotation(Test.class); Setgroups = new HashSet(); for (String group : test.groups()) { groups.add(group); } if (groups.contains('sanity')) { result.add(m); } else { String testMethod = m.getMethod().getMethodName(); System.out.println(testMethod + ' not a SANITY test so not included'); } } return result; }
# 6) IReporter
यह ग्राहकों द्वारा रिपोर्ट तैयार करने के लिए लागू किया जाता है। एक बार सभी सुइट चलने के बाद यह विधि लागू की जाएगी और पैरामीटर उस रन के दौरान हुए सभी परीक्षा परिणाम देते हैं।
तरीका:
शून्य जेनरेटपोर्ट (java.util.ist xmlSuites, java.util.List सुइट्स, java.lang.String outputDirectory)
उदाहरण:
@Override public void generateReport(List xmlSuites, List suites, String outdir) { try { writer = createWriter(outdir); } catch (IOException e) { System.err.println('Unable to create output file'); e.printStackTrace(); return; } startHtml(writer); writeReportTitle(reportTitle); generateSuiteSummaryReport(suites); generateMethodSummaryReport(suites); generateMethodDetailReport(suites); endHtml(writer); writer.flush(); writer.close(); }
निष्कर्ष
इस लेख में, हमने देखा है कि TestNG एनोटेशन हमारे प्रोग्राम लॉजिक को आसान बनाने में कैसे उपयोगी हो सकता है। एनोटेशन का उपयोग आवश्यकतानुसार किया जाता है।
आप एनोटेशन के मापदंडों को पास कर सकते हैं और साथ ही डेटा-चालित परीक्षण कर सकते हैं। आप समूहों में परीक्षण मामलों को चला सकते हैं और समय बचा सकते हैं। श्रोताओं के साथ, आप रिपोर्ट भी बना सकते हैं। क्या आपको नहीं लगता कि यह अद्भुत है?
TestNG.xml हमारे आगामी ट्यूटोरियल में विस्तार से बताया जाएगा। यह XML फ़ाइल TestNG फ्रेमवर्क की रीढ़ है और यह हमारे परीक्षण मामलों को निष्पादित करने में हमारी मदद करेगी।
=> यहां परफेक्ट टेस्टएनजी ट्रेनिंग गाइड देखें।
अनुशंसित पाठ
- सेलेनियम में TestNG एनोटेशन का उपयोग करना सीखें (उदाहरणों के साथ)
- सेलेनियम में जीत और TestNG चौखटे का उपयोग करना
- सेलेनियम स्क्रिप्ट में JUnit फ्रेमवर्क और इसके उपयोग का परिचय - सेलेनियम ट्यूटोरियल # 11
- 30+ सर्वश्रेष्ठ सेलेनियम ट्यूटोरियल: वास्तविक उदाहरणों के साथ सेलेनियम जानें
- TestNG उदाहरण: TestNG.xml फ़ाइल कैसे बनाएँ और उसका उपयोग करें
- JMeter श्रोता: विभिन्न श्रोताओं के साथ परिणाम का विश्लेषण
- सेलेनियम लिपियों के निर्माण के लिए TestNG फ्रेमवर्क का उपयोग कैसे करें - TestNG सेलेनियम ट्यूटोरियल # 12
- ग्रहण ट्यूटोरियल: ग्रहण जावा आईडीई में टेस्टएनजी को एकीकृत करना