2010-12-21 67 views
7

我的問題如下:TestNG可以運行多個套件嗎?

我正在使用Selenium和TestNG測試web-ui。我有一個包含很多測試類的測試套件。 我有一個@BeforeSuite方法,其還具有@Parameters註解,該方法接收作爲參數的瀏覽器其中硒測試將被運行時,執行行:

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

我使用的XML運行測試套件是:

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

這工作正常,測試在Firefox中運行。 我的問題是,我想以某種方式在第一次運行完成後立即再次運行此套件,但這次使用Chrome作爲瀏覽器。我現在有2個XML套件,一個使用Chrome,一個使用Firefox。有沒有辦法一個接一個地自動運行這些測試套件?也許使用第三個XML?

+0

是的,TestNG可以運行多個套件 – 2012-12-14 10:11:28

回答

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 2010-12-22 07:14:59

+0

這裏你把參數標籤放在測試標籤中,我需要將參數注入到@BeforeSuite方法中,而不是@BeforeTest – Eli 2010-12-22 07:15:53

13

可以RUNT TestNG的套房是這樣的:

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

你也可以用Ant任務並行運行的套房。如果你想要爲螞蟻提供示例代碼。

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
​​

廠細!!它將首先執行當前的訴訟,然後它將逐個執行包含的套件列表。

2

使用TestNG Xml運行多個套件的正確代碼如下, 我已經準備了三個套件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> 
相關問題