2010-04-30 18 views
5

मैं जावा में सेलेनियम आधारित परीक्षण चलाने के लिए टेस्टएनजी का उपयोग कर रहा हूं। मेरे पास दोहराए गए परीक्षणों का एक गुच्छा है। आम तौर पर, वे टेस्ट नाम और एक पैरामीटर को छोड़कर सब कुछ करते हैं।टेस्टएनजी में विभिन्न नामों के साथ परीक्षण कैसे उत्पन्न करें?

मैं इसकी पीढ़ी को स्वचालित करना चाहता हूं। मैं कारखाने का उपयोग करने के बारे में सोच रहा था। क्या अलग-अलग नामों के साथ परीक्षण उत्पन्न करने का कोई तरीका है? इसका सबसे अच्छा तरीका क्या होगा?

के रूप में अब मैं नीचे की तरह कुछ है और मैं LinkOfInterestIsActiveAfterClick

तरह
@Test(dependsOnGroups="loggedin") 
public class SmokeTest extends BrowserStartingStoping{ 

public void LinkOfInterestIsActiveAfterClick(){ 
     String link = "link_of_interest"; 
     browser.click("*",link); 
     Assert.assertTrue(browser.isLinkActive(link)); 
    } 

} 
  • मेरे एक्सएमएल सूट 10 परीक्षण बनाना चाहते हैं स्वत: जनरेट जावा कोड से है।
  • कौन से लिंक सक्रिय हैं, और कौन सा नहीं है लॉगिंग के लिए टेस्ट नाम महत्वपूर्ण हैं।
+0

[Eclipse प्लग में गतिशील रूप से उत्पन्न TestNG परीक्षण के लिए नाम] (के संभावित डुप्लिकेट http://stackoverflow.com/questions/12257387/names-for-dynamically- जेनरेट-टेस्टिंग-टेस्ट-इन-एक्लिप्स-प्लगइन) – Nathan

उत्तर

2

इसलिए मैंने डेटाप्रोवाइडर के साथ फैक्टरी को जोड़ा और संदर्भों के गुणों का उपयोग किया।

@DataProvider(name = "DP1") 
public Object[][] createData() { 
    Object[][] retObjArr={ 
    {"Link1","link_to_page"}, 
    {"Link2","link_to_page"}, 
    return retObjArr; 
} 

@Test (dataProvider = "DP1") 
public void isActive(String name, String link){ 
    this.context.setAttribute("name", name); 
    browser.click(link); 
    Assert.assertTrue(browser.isLinkActive(link)); 
} 

और श्रोता में

public class MyListener extends TestListenerAdapter{ 
    @Override 
    public void onTestSuccess(ITestResult tr){ 
    log("+",tr); 
    } 
    //and similar 

    private void log(String string, ITestResult tr){ 
    List<ITestContext> k = this.getTestContexts(); 
    String testName = tr.getTestClass().getName();  
    for (ITestContext i: k) 
    { 
     if (i.getAttribute("name") != null) 
     logger.info(testName+"."+i.getAttribute("name")); 
    } 
    } 

} 
+0

क्या आप यहां दिखा सकते हैं कि आपने फैक्टरी क्लास का उपयोग कैसे किया? – djangofan

+0

@djangofan क्षमा करें, लेकिन मेरे पास अब कोड नहीं है। (4 साल पहले उत्तर दिया गया) –

+0

ठीक है, ठीक है, मैं आपको बता सकता हूं कि जिस समाधान को आपने यहां उत्तर के रूप में पोस्ट किया है वह वास्तव में काम नहीं करता है। अब, यदि आप वास्तव में अलग-अलग वर्गों का निर्माण करने वाली फैक्ट्री दिखाते हैं, तो मुझे विश्वास है कि यह काम करेगा। डेटाप्रोवाइडर से उत्पन्न परीक्षणों पर परीक्षण नाम सेट करना काम नहीं करता है क्योंकि क्लास इंस्टेंस कक्षा के एकाधिक पैरामीटर कॉल के बीच परीक्षण नाम साझा करता है। – djangofan

8

अपनी परीक्षा कक्षा org.testng.ITest लागू करें और अपना इच्छित नाम वापस करने के लिए getTestName() ओवरराइड करें।

संबंधित मुद्दे