2010-12-21 73 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> 
相关问题