2010-12-21 16 views
7

मेरी समस्या निम्नानुसार है:क्या टेस्टएनजी कई सूट चला सकता है?

मैं सेलेनियम और टेस्टएनजी का उपयोग कर वेब-यूई का परीक्षण कर रहा हूं। मेरे पास कई टेस्ट क्लास के साथ एक टेस्ट सूट है। मैं एक @BeforeSuite विधि जो भी एक @Parameters एनोटेशन है है, इस विधि, एक पैरामीटर ब्राउज़र जिसमें सेलेनियम परीक्षण चलाया जाएगा के रूप में प्राप्त करता है लाइनों को क्रियान्वित:

selenium = new DefaultSelenium("localhost", 4444, browser, "http://localhost:8099"); 
selenium.start(); 

एक्सएमएल मैं करने के लिए उपयोग कर रहा हूँ परीक्षण सुइट चलाएं:

<suite name="suite"> 
<parameter name = "browser" value = "*firefox"/> 
<test name="allTests"> 
    <classes> 
    <class name="test.webui.MemcachedDeploymentTest" /> 
    </classes> 
</test> 
</suite> 

यह ठीक काम करता है और परीक्षण फ़ायरफ़ॉक्स में चलता है। मेरी समस्या यह है कि मैं किसी भी तरह से इस सूट को फिर से चलाने के लिए, पहले रन खत्म होने के तुरंत बाद, लेकिन इस बार ब्राउज़र के रूप में क्रोम के साथ। अब मेरे पास 2 एक्सएमएल सूट हैं, एक क्रोम के साथ और एक फ़ायरफ़ॉक्स के साथ। क्या इन टेस्ट सूट को स्वचालित रूप से एक दूसरे के बाद चलाने का कोई तरीका है? शायद एक तीसरे एक्सएमएल का उपयोग कर?

+0

हाँ, टेस्टएनजी कई सूट –

उत्तर

7

परीक्षण टैग के अंदर अपने पैरामीटर टैग रखो और एक और परीक्षण टैग बनाने:

<suite name="suite"> 
    <test name="Firefox tests"> 
     <parameter name="browser" value="*firefox" /> 
     <classes> 
      <class name="test.webui.MemcachedDeploymentTest" /> 
     </classes> 
    </test> 
    <test name="Chrome tests"> 
     <parameter name="browser" value="*chrome" /> 
     <classes> 
      <class name="test.webui.MemcachedDeploymentTest" /> 
     </classes> 
    </test> 
</suite> 

एक अन्य विकल्प है कि कम वर्बोज़ होगा @Factory उपयोग करने के लिए किया जाएगा।

+0

हाय चला सकता है। यह समाधान बिल्कुल ठीक नहीं था जो मुझे दिमाग में था। – Eli

+0

यहां आप टेस्ट टैग में पैरामीटर टैग डालते हैं, मुझे @BeforeSuite विधि में इंजेक्शन देने के लिए पैरामीटर की आवश्यकता है, नहीं @BeforeTest – Eli

+0

क्या एक ही सूट को दो बार अलग-अलग पैरामीटर के साथ चलाने पर कोई तरीका है? – Eli

13

आप इस तरह TestNG सुइट्स छोटा सा व्यक्ति कर सकते हैं:

<suite name="allSuites"> 
    <suite-files> 
    <suite-file path="suite1.xml" /> 
    <suite-file path="suite2.xml" /> 
    ... 
    </suite-files> 
</suite> 

तुम भी एक चींटी कार्य के साथ समानांतर में उन सुइट्स चला सकते हैं। यदि आप चाहते हैं कि मैं चींटी के लिए उदाहरण कोड प्रदान करूंगा।

+0

हां, उपरोक्त काम करना चाहिए –

+0

क्या आप इसे मेवेन कार्य के साथ समानांतर में चलाने के लिए उदाहरण कोड प्रदान कर सकते हैं? – praneel

+0

क्षमा करें मैंने अभी तक कोशिश नहीं की है इसलिए मैं इसके लिए कोड प्रदान नहीं कर सकता। – Tarken

2

Maven के माध्यम से:

<plugin> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <configuration> 
     <suiteXmlFiles> 
     <suiteXmlFile>src/test/resources/unit-testng.xml</suiteXmlFile> 
     <suiteXmlFile>src/test/resources/api-testng.xml</suiteXmlFile> 
     </suiteXmlFiles> 
    </configuration> 
</plugin> 
2
<suite name="allSuites"> 
    <suite-files> 
    <suite-file path="suite1.xml" /> 
    <suite-file path="suite2.xml" /> 
    </suite-files> 
</suite> 

वर्क्स ठीक !! यह पहले मौजूदा सूट निष्पादित करेगा और फिर यह सूट की एक सूची को एक-एक करके निष्पादित करेगा।

2

टेस्टएनजी एक्सएमएल का उपयोग करके एकाधिक स्वीट्स चलाने के लिए सही कोड नीचे चला जाता है, जहां मैंने तीन सूट suiteA.xml, suiteB.xml, suiteC.xml तैयार किया है और उन्हें testng.xml में समेकित किया है। आप नीचे दिए गए कोड को पेस्ट कर सकते हैं और क्लास टैग में packagename.classname को बदल सकते हैं और इसे चलाएंगे .... ************** suiteA.xml ******* ***********

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="SuiteA" > 
<!-- suite name="Suite Name" --> 


      <test name="TestA1" allow-return-values="true"> 
        <classes> 
         <!-- packagename.Testcase class name --> 
          <class name ="com.qtpselenium.suiteA.TestCaseA1" /> 
        </classes> 
      </test> 

      <test name="TestA2" allow-return-values="true"> 
        <classes> 
         <!-- packagename.Testcase class name --> 
          <class name ="com.qtpselenium.suiteA.TestCaseA1" /> 
        </classes> 
      </test> 



</suite> 
*******************suiteB.xml******* 

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="SuiteB" > 
<!-- suite name="Suite Name" --> 


      <test name="TestB1" allow-return-values="true"> 
        <classes> 
         <!-- packagename.Testcase class name --> 
          <class name ="com.qtpselenium.suiteB.TestCaseB1" /> 
        </classes> 
      </test> 

      <test name="TestB2" allow-return-values="true"> 
        <classes> 
         <!-- packagename.Testcase class name --> 
          <class name ="com.qtpselenium.suiteB.TestCaseB2" /> 
        </classes> 
      </test> 


</suite> 

***********************suiteC.xml********** 

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="SuiteC" > 
<!-- suite name="Suite Name" --> 


      <test name="TestC1" allow-return-values="true"> 
        <classes> 
         <!-- packagename.Testcase class name --> 
          <class name ="com.qtpselenium.suiteC.TestCaseC1" /> 
        </classes> 
      </test> 

      <test name="TestC2" allow-return-values="true"> 
        <classes> 
         <!-- packagename.Testcase class name --> 
          <class name ="com.qtpselenium.suiteC.TestCaseC2" /> 
        </classes> 
      </test> 


</suite> 

*********************testng.xml***************** 

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="TestNG Dadadriver suite" > 
<!-- suite name="Suite Name" --> 


     <suite-files> 
       <suite-file path="./suiteA.xml" /> 
       <suite-file path="./suiteB.xml" /> 
       <suite-file path="./suiteC.xml" /> 

     </suite-files> 


</suite> 
संबंधित मुद्दे