TestNG श्रोतागण Selenium

⚡ स्मार्ट सारांश

श्रोतागण Selenium वेबड्राइवर हैं TestNG यह लेख ITestListener विधियों की व्याख्या करता है और एक रन करने योग्य इंटरफ़ेस के माध्यम से लॉग, रिपोर्ट और विफलता के बाद की कार्रवाइयों को अनुकूलित करने के लिए परीक्षण घटनाओं को इंटरसेप्ट करता है। Java उदाहरण के लिए, और यह स्पष्ट करता है कि कैसे Selenium 4 ने अप्रचलित WebDriverEventListener को प्रतिस्थापित कर दिया।

  • ❓ श्रोता क्या करते हैं: वे सदस्यता लेते हैं TestNG स्टार्ट, पास, फेल और स्किप जैसी घटनाएं लॉगिंग या रिपोर्टिंग हुक को संचालित करने के लिए होती हैं।
  • 🧩 बारह इंटरफेस: TestNG बारीक नियंत्रण के लिए ITestListener, ISuiteListener, IReporter, IInvokedMethodListener और IAnnotationTransformer जैसे इंटरफेस प्रदान करता है।
  • ️ दो वायरिंग मोड: किसी एक क्लास पर @Listeners एनोटेशन के साथ एक लिसनर अटैच करें, या प्रत्येक सूट के लिए इसे testng.xml के अंदर एक बार रजिस्टर करें।
  • 🚀 Selenium 4 अद्यतन: EventFiringWebDriver अब अप्रचलित हो चुका है; आधुनिक WebDriverListener इंटरफ़ेस और EventFiringDecorator अब WebDriver-स्तर के इवेंट हुक्स को शक्ति प्रदान करते हैं।
  • 🤖 एआई का दृष्टिकोण: एआई-सहायता प्राप्त लिसनर विफलताओं को स्वचालित रूप से वर्गीकृत कर सकते हैं, स्मार्ट स्क्रीनशॉट संलग्न कर सकते हैं और अस्थिर परीक्षण संकेतों को वास्तविक समय में सीआई डैशबोर्ड पर वापस भेज सकते हैं।

TestNG श्रोतागण Selenium

Selenium वेबड्राइवर स्क्रिप्ट को अक्सर परीक्षण घटनाओं जैसे कि उत्तीर्ण अभिकथन, विफल लोकेटर या छूटे हुए चरण पर प्रतिक्रिया करने की आवश्यकता होती है। लिसनर इसे संभव बनाते हैं। मोटे तौर पर, Selenium ये परियोजनाएं दो श्रोता परिवारों पर निर्भर करती हैं:

  1. वेबड्राइवर श्रोता
  2. TestNG श्रोताओं

इस ट्यूटोरियल में, हम पर ध्यान केंद्रित करेंगे TestNG वेबड्राइवर-स्तर के श्रोताओं में किस प्रकार परिवर्तन हुए, इस पर एक टिप्पणी के साथ श्रोताओं के लिए। Selenium 4.x।

श्रोता क्या होता है? TestNG?

लिसनर एक इंटरफ़ेस है जो डिफ़ॉल्ट व्यवहार को संशोधित करता है। TestNGजैसा कि नाम से पता चलता है, लिसनर्स परिभाषित घटनाओं को "सुनते" हैं। Selenium स्क्रिप्ट और प्रतिक्रिया को तदनुसार संचालित करें। आप संबंधित लिसनर इंटरफ़ेस को लागू करके और इसे अपनी टेस्ट क्लास या सूट पर पंजीकृत करके इनका उपयोग कर सकते हैं। लिसनर आपको अनुकूलन की अनुमति देते हैं। TestNG रिपोर्ट तैयार करें, स्क्रीनशॉट संलग्न करें और संरचित लॉग उत्सर्जित करें।

श्रोताओं के प्रकार TestNG

TestNG यह लिसनर इंटरफेस के एक परिवार को शिप करता है, और प्रत्येक इंटरफेस परीक्षण जीवनचक्र के एक अलग चरण को लक्षित करता है।

नीचे आमतौर पर उपयोग किए जाने वाले शब्द दिए गए हैं TestNG श्रोताओं:

  1. आईएनोटेशनट्रांसफॉर्मर
  2. IAnnotationTransformer2
  3. Iकॉन्फ़िगर करने योग्य
  4. आईकॉन्फ़िगरेशनश्रोता
  5. IExecutionListener
  6. IHookable
  7. IInvokedMethodListener
  8. IInvokedMethodListener2
  9. IMethodइंटरसेप्टर
  10. आईरिपोर्टर
  11. ISuiteListener
  12. आईटेस्ट लिस्टनर

इन इंटरफेसों का उपयोग किया जाता है Selenium लॉग उत्पन्न करने या अनुकूलित करने के लिए TestNG रिपोर्ट। इस ट्यूटोरियल में, हम इसे लागू करेंगे। आईटेस्ट लिस्टनर.

आईटेस्ट लिस्टनर निम्नलिखित विधियों को उजागर करता है:

  • ऑनस्टार्ट – किसी भी परीक्षण के शुरू होने पर इसे कॉल किया जाता है।
  • ऑनटेस्टसक्सेस – टेस्ट पास होने पर कॉल किया जाता है।
  • onTestFailure – टेस्ट विफल होने पर कॉल किया जाता है।
  • onTestSkipped – जब कोई टेस्ट स्किप किया जाता है तो इसे कॉल किया जाता है।
  • onTestFailedButWithinSuccessPercentage – यह तब कॉल किया जाता है जब कोई टेस्ट विफल हो जाता है लेकिन सफलता प्रतिशत के भीतर होता है।
  • ऑनफ़िनिश – क्लास में सभी टेस्ट पूरे होने के बाद इसे कॉल किया जाता है।

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

इस परीक्षण परिदृश्य में, हम लॉगिन प्रक्रिया को स्वचालित करेंगे और इसे लागू करेंगे। आईटेस्ट लिस्टनर इसके खिलाफ।

  1. लांच Firefox और साइट खोलें https://demo.guru99.com/V4/

टेस्ट सिनेरियो लॉगिन URL

  1. एप्लिकेशन में लॉग इन करें।

परीक्षण परिदृश्य लॉगिन फ़ॉर्म

बनाने के चरण TestNG श्रोता

ऊपर दिए गए परीक्षण परिदृश्य के लिए, हम लिसनर को चरण दर चरण लागू करेंगे।

चरण 1) एक क्लास बनाएं जिसका नाम हो लिसनरटेस्ट जो लागू करता है आईटेस्ट लिस्टनरलाल अंडरलाइन पर माउस ले जाएं और Eclipse नीचे दिखाए गए अनुसार दो त्वरित समाधान सुझाए जाएंगे:

Eclipse असंबद्ध विधियों को जोड़ने के लिए त्वरित समाधान

“अपूर्णीकृत विधियाँ जोड़ें” पर क्लिक करें। आपके कोड में कई स्टब विधियाँ (बिना बॉडी के) जुड़ जाएँगी, जो इस प्रकार दिखाई देंगी:

पैकेज लिसनर_डेमो;

आयात org.testng.ITestContext;
आयात org.testng.ITestListener;
आयात org.testng.ITestResult;

सार्वजनिक वर्ग लिसनरटेस्ट औजार आईटेस्ट लिस्टनर {

@ ऑवरराइड
सार्वजनिक शून्य ऑनफ़िनिश(ITestContext arg0) {
// TODO स्वचालित रूप से उत्पन्न विधि स्टब
}

@ ऑवरराइड
सार्वजनिक शून्य ऑनस्टार्ट(ITestContext arg0) {
// TODO स्वचालित रूप से उत्पन्न विधि स्टब
}

@ ऑवरराइड
सार्वजनिक शून्य onTestFailedButWithinSuccessPercentage(आईटीेस्ट परिणाम arg0) {
// TODO स्वचालित रूप से उत्पन्न विधि स्टब
}

@ ऑवरराइड
सार्वजनिक शून्य onTestFailure(आईटीेस्ट परिणाम arg0) {
// TODO स्वचालित रूप से उत्पन्न विधि स्टब
}

@ ऑवरराइड
सार्वजनिक शून्य onTestSkipped(आईटीेस्ट परिणाम arg0) {
// TODO स्वचालित रूप से उत्पन्न विधि स्टब
}

@ ऑवरराइड
सार्वजनिक शून्य onTestStart(आईटीेस्ट परिणाम arg0) {
// TODO स्वचालित रूप से उत्पन्न विधि स्टब
}

@ ऑवरराइड
सार्वजनिक शून्य ऑनटेस्टसक्सेस(आईटीेस्ट परिणाम arg0) {
// TODO स्वचालित रूप से उत्पन्न विधि स्टब
}
}

अब आइए इसमें संशोधन करें लिसनरटेस्ट क्लास। विशेष रूप से, हम निम्नलिखित विधियों को भरेंगे: ऑनटेस्टफेलियर, onTestSkipped, ऑनटेस्टस्टार्ट, तथा ऑनटेस्टसफलता.

यह बदलाव सरल है: प्रत्येक विधि परीक्षण का नाम प्रिंट करती है ताकि कंसोल स्पष्ट रूप से पास, फेल और स्किप स्थिति दिखा सके।

संशोधन के बाद, कोड इस प्रकार दिखता है:

पैकेज लिसनर_डेमो;

आयात org.testng.ITestContext;
आयात org.testng.ITestListener;
आयात org.testng.ITestResult;

सार्वजनिक वर्ग लिसनरटेस्ट औजार आईटेस्ट लिस्टनर {

@ ऑवरराइड
सार्वजनिक शून्य ऑनफ़िनिश(ITestContext परिणाम) {
}

@ ऑवरराइड
सार्वजनिक शून्य ऑनस्टार्ट(ITestContext परिणाम) {
}

@ ऑवरराइड
सार्वजनिक शून्य onTestFailedButWithinSuccessPercentage(आईटीेस्ट परिणाम परिणाम) {
}

// जब कोई टेस्ट केस विफल होता है, तो यह विधि कॉल की जाती है।
@ ऑवरराइड
सार्वजनिक शून्य onTestFailure(आईटीेस्ट परिणाम परिणाम) {
System.out.println(“जिस टेस्ट केस में विफलता मिली है उसका नाम यह है:” + परिणाम.getName());
}

// जब कोई टेस्ट केस स्किप किया जाता है, तो यह मेथड कॉल की जाती है।
@ ऑवरराइड
सार्वजनिक शून्य onTestSkipped(आईटीेस्ट परिणाम परिणाम) {
System.out.println(“स्किप किए गए टेस्ट केस का नाम यह है:” + परिणाम.getName());
}

// जब कोई टेस्ट केस शुरू होता है, तो यह विधि कॉल की जाती है।
@ ऑवरराइड
सार्वजनिक शून्य onTestStart(आईटीेस्ट परिणाम परिणाम) {
System.out.println(Result.getName() + "टेस्ट केस शुरू हो गया");
}

// जब कोई टेस्ट केस पास होता है, तो यह विधि कॉल की जाती है।
@ ऑवरराइड
सार्वजनिक शून्य ऑनटेस्टसक्सेस(आईटीेस्ट परिणाम परिणाम) {
System.out.println(“सफल हुए टेस्ट केस का नाम यह है:” + परिणाम.getName());
}
}

चरण 2) एक और क्लास बनाएं जिसे कहा जाता है टेस्टकेस लॉगिन स्वचालन के लिए। Selenium यह क्लास डेमो साइट पर लॉग इन करने के लिए निष्पादित की जाएगी।

पैकेज लिसनर_डेमो;

आयात org.openqa.सेलेनियम.बाय;
आयात org.openqa.selenium.WebDriver;
आयात org.openqa.selenium.फ़ायरफ़ॉक्स.Firefoxचालक;
आयात org.testng.Assert;
आयात org.testng.annotations.Listeners;
आयात org.testng.annotations.टेस्ट;

सार्वजनिक वर्ग टेस्टकेस {
वेबड्राइवर ड्राइवर = नई Firefoxचालक();

// यह परीक्षण सफल होने के लिए डिज़ाइन किया गया है, ताकि सफलता श्रोता की पुष्टि की जा सके।
@परीक्षा
सार्वजनिक शून्य लॉग इन करें() {
ड्राइवर.गेट("https://demo.guru99.com/V4/");
ड्राइवर.फाइंडएलिमेंट(बाय.नाम(“यूआईडी”)).sendKeys(“mngr34926”);
ड्राइवर.फाइंडएलिमेंट(बाय.नाम("कुंजिका")).sendKeys(“अमुपेनु”);
ड्राइवर.फाइंडएलिमेंट(बाय.नाम(“बटन लॉगिन”)).क्लिक();
}

// विफलता श्रोता को सत्यापित करने के लिए परीक्षण को जबरदस्ती विफल किया गया।
@परीक्षा
सार्वजनिक शून्य TestToFail() {
System.out.println(“परीक्षण की यह विधि विफल रही”);
Assert.assertTrue(असत्य);
}
}

चरण 3) इसके बाद, इस लिसनर को हमारी टेस्ट क्लास से अटैच करें। टेस्टकेसकिसी क्लास को लिसनर इंटरफेस से जोड़ने के दो तरीके हैं।

पहला तरीका यह है कि @श्रोताओं नीचे दिखाए गए अनुसार एनोटेशन:

@Listeners(Listener_Demo.ListenerTest.class)

हम इस एनोटेशन को ऊपर जोड़ते हैं टेस्टकेस क्लास। फिर क्लास इस प्रकार दिखाई देगी:

पैकेज लिसनर_डेमो;

आयात org.openqa.सेलेनियम.बाय;
आयात org.openqa.selenium.WebDriver;
आयात org.openqa.selenium.फ़ायरफ़ॉक्स.Firefoxचालक;
आयात org.testng.Assert;
आयात org.testng.annotations.Listeners;
आयात org.testng.annotations.टेस्ट;

@Listeners(Listener_Demo.ListenerTest.class)
सार्वजनिक वर्ग टेस्टकेस {
वेबड्राइवर ड्राइवर = नई Firefoxचालक();

// सफलता श्रोता को सत्यापित करने के लिए परीक्षण पास होना चाहिए।
@परीक्षा
सार्वजनिक शून्य लॉग इन करें() {
ड्राइवर.गेट("https://demo.guru99.com/V4/");
ड्राइवर.फाइंडएलिमेंट(बाय.नाम(“यूआईडी”)).sendKeys(“mngr34926”);
ड्राइवर.फाइंडएलिमेंट(बाय.नाम("कुंजिका")).sendKeys(“अमुपेनु”);
ड्राइवर.फाइंडएलिमेंट(बाय.नाम(“बटन लॉगिन”)).क्लिक();
}

// विफलता श्रोता को सत्यापित करने के लिए परीक्षण को जबरदस्ती विफल किया गया।
@परीक्षा
सार्वजनिक शून्य TestToFail() {
System.out.println(“परीक्षण की यह विधि विफल रही”);
Assert.assertTrue(असत्य);
}
}

परियोजना संरचना इस प्रकार है:

TestNG श्रोता परियोजना संरचना

चरण 4) निष्पादित करें टेस्टकेस क्लास. अंदर के तरीके लिसनरटेस्ट एनोटेट किए गए तरीकों के व्यवहार के आधार पर स्वचालित रूप से लागू होते हैं। @परीक्षा.

चरण 5) कंसोल में दिखाए गए आउटपुट की जाँच करें।

का उत्पादन टेस्टकेस की तरह लगता है:

TestNG लिसनर कंसोल आउटपुट

[TestNG] दौड़ना:
C:\Users\gauravn\AppData\Local\Temp\testng-eclipse–1058076918\testng-customsuite.xml

लॉगिन परीक्षण मामला शुरू हो गया
उत्तीर्ण हुए टेस्ट केस का नाम है: लॉगिन
TestToFail टेस्ट केस शुरू हो गया
यह परीक्षण विधि विफल हो जाती है
असफल हुए टेस्ट केस का नाम है: TestToFail
सफल: लॉगिन
असफल: टेस्ट टू फेल
java.lang.AssertionError: अपेक्षित [true] था लेकिन [false] मिला

एकाधिक कक्षाओं के लिए श्रोता का उपयोग करना

यदि किसी प्रोजेक्ट में कई टेस्ट क्लास हैं, तो उन्हें जोड़ना @श्रोताओं प्रत्येक पर टिप्पणी लिखना बोझिल और त्रुटिपूर्ण हो जाता है।

उस स्थिति में, एक बनाएँ testng.xml फाइल बनाएं और वहां एक बार लिसनर को रजिस्टर करें।

एकाधिक कक्षाओं के लिए testng.xml लिसनर्स टैग

यह लिसनर फिर क्लासों की संख्या की परवाह किए बिना पूरे टेस्ट सूट पर लागू होता है। जब आप XML फ़ाइल चलाते हैं, तो सूट में घोषित प्रत्येक क्लास के लिए लिसनर सक्रिय हो जाता है, और आप एक ही टैग के भीतर कितनी भी लिसनर क्लासों को एक साथ जोड़ सकते हैं।

वेबड्राइवरलिसनर में Selenium 4 बनाम अप्रचलित EventFiringWebDriver

जबकि TestNG लिसनर टेस्ट लाइफसाइकिल इवेंट्स पर प्रतिक्रिया करते हैं, जबकि वेबड्राइवर लिसनर ब्राउज़र-ड्राइवर क्रियाओं जैसे क्लिक, नेविगेशन या फाइंडएलिमेंट कॉल पर प्रतिक्रिया करते हैं। Selenium 3. सामान्य दृष्टिकोण यह था कि वेबड्राइवरइवेंटलिसनर इंटरफ़ेस के माध्यम से वायर्ड इवेंटफायरिंगवेबड्राइवरदोनों को अप्रचलित कर दिया गया है। Selenium 4.x।

इसका आधुनिक प्रतिस्थापन यह है: वेबड्राइवरलिसनर इंटरफ़ेस संयुक्त के साथ इवेंटफायरिंगडेकोरेटर:

आयात org.openqa.selenium.WebDriver;
आयात org.openqa.selenium.chrome.ChromeDriver;
आयात org.openqa.selenium.support.events.EventFiringDecorator;
आयात org.openqa.selenium.support.events.WebDriverListener;

सार्वजनिक वर्ग लॉगिंगलिसनर औजार वेबड्राइवरलिसनर {
@ ऑवरराइड
सार्वजनिक शून्य beforeGet(वेबड्राइवर ड्राइवर, स्ट्रिंग यूआरएल) {
System.out.println(“की ओर अग्रसर हो रहा है” + यूआरएल);
}
}

वेबड्राइवर कच्चा = नई क्रोमड्राइवर();
वेबड्राइवर ड्राइवर = नई इवेंटफायरिंगडेकोरेटर<>(नई लॉगिंगलिसनर()).डेकोरेट(रॉ);

डेकोरेटर किसी भी वेबड्राइवर, वेबएलिमेंट या अलर्ट को रैप कर सकता है, जो पुराने इवेंट-फायरिंग रैपर की तुलना में अधिक लचीला है। उपयोग करें वेबड्राइवरलिसनर ब्राउज़र-साइड अवलोकनशीलता के लिए और TestNG आईटेस्ट लिस्टनर सुइट-स्तरीय रिपोर्टिंग के लिए।

एआई-संचालित श्रोता: बेहतर लॉग और विफलता प्रबंधन

आधुनिक Selenium टीमें सीआई संकेतों को अधिक उपयोगी बनाने के लिए अपने श्रोताओं में एआई सेवाओं को तेजी से एकीकृत कर रही हैं। ऑनटेस्टफेलियरएक एआई-सहायता प्राप्त श्रोता डीओएम स्नैपशॉट और स्क्रीनशॉट कैप्चर कर सकता है, उन्हें एक मॉडल को भेज सकता है जो संभावित मूल-कारण क्लस्टर लौटाता है, और एक टैग वापस लिख सकता है। TestNG रिपोर्ट या रिपोर्टपोर्टल जैसे टूल का उपयोग करें।

सामान्य एआई-संचालित पैटर्न में निम्नलिखित शामिल हैं:

  • फ्लेकी-टेस्ट डिटेक्शन: श्रोता उत्तीर्ण/अनुत्तीर्ण होने की समयरेखा को एक मॉडल को अग्रेषित करते हैं जो विफलता को अस्थिर, पर्यावरणीय या वास्तविक प्रतिगमन के रूप में वर्गीकृत करता है।
  • स्मार्ट स्क्रीनशॉट: कंप्यूटर-विज़न मॉडल यूआई स्क्रीनशॉट को क्रॉप करते हैं, एनोटेट करते हैं और उनमें अंतर दिखाते हैं ताकि समीक्षक पूरे पेज के स्क्रीनशॉट के बजाय बदले हुए क्षेत्र को देख सकें।
  • स्व-उपचार लोकेटर: A वेबड्राइवरलिसनर हुक beforeFindElement और जब प्राथमिक लोकेटर त्रुटि देता है तो वैकल्पिक लोकेटर सुझाने के लिए एआई सहायक से अनुरोध करता है। कोई ऐसाएलिमेंटएक्सेप्शन नहीं.
  • प्राकृतिक भाषा में सारांश: An आईरिपोर्टर कार्यान्वयन प्रक्रिया के परिणाम एलएलएम में जाते हैं, जो एक पैराग्राफ का स्टैंड-अप सारांश तैयार करता है।

लिसनर लेयर इन हुक्स को इंजेक्ट करने के लिए सबसे साफ जगह है क्योंकि यह टेस्ट लॉजिक से बाहर रहता है और पूरे सूट में समान रूप से लागू होता है।

सारांश

श्रोताओं को लॉग उत्पन्न करने या अनुकूलित करने की आवश्यकता होती है TestNG में रिपोर्ट Selenium वेबड्राइवर.

  • TestNG यह कई लिसनर इंटरफेस प्रदान करता है; उस इंटरफेस को चुनें जो आपके लिए महत्वपूर्ण घटना से मेल खाता हो।
  • लिसनर वे इंटरफेस हैं जिनका उपयोग किया जाता है Selenium टेस्ट लाइफसाइकिल इवेंट्स पर प्रतिक्रिया देने के लिए वेबड्राइवर स्क्रिप्ट।
  • ट्यूटोरियल में यह दिखाया गया है आईटेस्ट लिस्टनर एक उत्तीर्ण और एक अनुत्तीर्ण परीक्षा के साथ।
  • आप एक लिसनर को इससे जोड़ सकते हैं @श्रोताओं या इसे एक बार पंजीकृत करें testng.xml पूरे सुइट के लिए।
  • Selenium 4.x प्रतिस्थापित करता है इवेंटफायरिंगवेबड्राइवर साथ में वेबड्राइवरलिसनर + इवेंटफायरिंगडेकोरेटर वेबड्राइवर-स्तर की घटनाओं के लिए।

अक्सर पूछे जाने वाले प्रश्न

लिसनर एक इंटरफ़ेस है जो किसी गतिविधि के दौरान उत्पन्न होने वाली घटनाओं की सदस्यता लेता है। Selenium परीक्षण के लिए चलाना। TestNG लिसनर टेस्ट लाइफसाइकिल इवेंट्स जैसे स्टार्ट, पास, फेल और स्किप पर प्रतिक्रिया करते हैं। वेबड्राइवर लिसनर ब्राउज़र-ड्राइवर इवेंट्स जैसे क्लिक, नेविगेशन और फाइंडएलिमेंट कॉल पर प्रतिक्रिया करते हैं।

ITestListener व्यक्तिगत @Test विधियों के लिए सक्रिय होता है और onTestStart, onTestSuccess, onTestFailure, onTestSkipped और onFinish को प्रदर्शित करता है। ISuiteListener प्रति सूट केवल दो बार, onStart और onFinish के साथ सक्रिय होता है, जिससे यह रिपोर्ट फ़ाइल खोलने जैसे सूट-स्तरीय सेटअप के लिए आदर्श है।

आप रजिस्टर कर सकते हैं TestNG दो तरीकों से श्रोता का उपयोग करें: परीक्षण वर्ग के ऊपर @Listeners(MyListener.class) एनोटेशन जोड़ें, या एक घोषित करें testng.xml के अंदर टैग का उपयोग करें। XML दृष्टिकोण स्रोत कोड को संशोधित किए बिना सूट में प्रत्येक क्लास पर लिसनर लागू करता है।

EventFiringWebDriver और WebDriverEventListener को अप्रचलित कर दिया गया है। Selenium 4.x. अनुशंसित प्रतिस्थापन वेबड्राइवरलिसनर इंटरफ़ेस है जिसे इवेंटफायरिंगडेकोरेटर के साथ जोड़ा गया है, जो वेबड्राइवर, वेबएलिमेंट या अलर्ट इंस्टेंस को रैप कर सकता है और बिफोरगेट और आफ्टरक्लिक जैसे क्लीनर हुक पॉइंट प्रदान करता है।

जब आप परीक्षण प्रक्रिया पूरी होने के बाद कोई कस्टम रिपोर्ट, जैसे कि HTML या JSON सारांश, तैयार करना चाहते हैं, तो IReporter का उपयोग करें। जब आपको प्रत्येक परीक्षण विधि से पहले और बाद में हुक की आवश्यकता हो, जिसमें @BeforeMethod और @AfterMethod जैसी कॉन्फ़िगरेशन विधियाँ शामिल हों, तो IInvokedMethodListener का उपयोग करें।

एआई मॉडल प्रत्येक लॉग एंट्री को गंभीरता के साथ टैग करके, प्राकृतिक भाषा में चरण विवरण उत्पन्न करके और संबंधित विफलताओं को क्लस्टर करके श्रोता आउटपुट को समृद्ध कर सकते हैं। onTestFailure के भीतर, एक एआई सेवा स्क्रीनशॉट और स्टैक का विश्लेषण कर सकती है। tracइसके बाद, संभावित मूल कारण को इससे जोड़ें। TestNG रिपोर्ट.

हाँ। एक श्रोता पास/फेल इतिहास को एक एआई सेवा में स्ट्रीम कर सकता है जो विफलता को अस्थिर, पर्यावरणीय या वास्तविक प्रतिगमन के रूप में वर्गीकृत करती है। निर्णय को एक प्रारूप में वापस लिखा जाता है। TestNG यह एक विशेषता है, जिससे डैशबोर्ड हर रेड बिल्ड की मानवीय समीक्षा किए बिना ही अस्थिर परीक्षणों को अलग कर सकते हैं।

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