2017-04-27 85 views
1

我的要求是我必须重复一个套件(SBSuite.xml),该套件有多个测试,具有不同的参数集。我尝试了下面的配置,但得到错误。我们可以重复套件文件还是使用params多次重复单个套件文件的正确解决方案是什么?如何重复使用不同参数的testng套件文件

<?xml version="1.0" encoding="UTF-8"?> 
<suite name="SBCrossBrowser"> 
    <listeners> 
     <listener class-name="net.sf.testng.databinding.TestAnnotationTransformer"></listener> 
    </listeners> 
    <suite-files> 
     <parameter name="browser" value="CHROME" /> 
     <suite-file path="SBSuite.xml"/> 
    </suite-files> 


    <suite-files> 
     <parameter name="browser" value="IE" /> 
     <suite-file path="SBSuite.xml"/> 
    </suite-files> 
</suite> 

我收到以下错误:

org.testng.TestNGException: 
Two suites cannot have the same name: SBSuite 
    at org.testng.TestNG.checkSuiteNamesInternal(TestNG.java:1019) 
    at org.testng.TestNG.checkSuiteNamesInternal(TestNG.java:1022) 
    at org.testng.TestNG.checkSuiteNames(TestNG.java:1012) 
    at org.testng.TestNG.sanityCheck(TestNG.java:985) 
    at org.testng.TestNG.run(TestNG.java:1037) 
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132) 
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:230) 
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:76) 
+0

您使用哪种TestNG版本?你可以试用最新版本吗? – juherr

+1

这个问题已经知道了:https://github.com/cbeust/testng/issues/951 – juherr

+0

谢谢@juherr,貌似唯一的解决办法就是将套件复制到链接的ChromeSuite.xml,FFSuite.xml和运行主人套房。 – vikas

回答

0

正如你刚才提到你have to repeat a suite (SBSuite.xml) which has multiple tests, with different set of parameters IMO倒不如把整个测试步骤下Test注释。通过<parameter>标签创建单个测试套件,并使用不同的参数集执行测试套件。例如<parameter name="browser" value="firefox"/>

请记住保持测试套件的名称不同。通过这种方法,您可以一个接一个地并行执行TestSuites。

让我知道这是否解决您的问题。

+0

@vikas我的答案解决了你的问题吗? – DebanjanB

+0

我想你建议为不同的浏览器创建不同的节点。这将工作,但不会解决我的需要。我的需要是我有大约20个,我不想把它们放在一起测试。其次,我不想复制具有不同参数的相同套件(例如FireFoxSuite.xml,IESuite.xml)以在不同的浏览器上运行。所以我遵循了我在问题中提到的方法。但它是抛出错误。 – vikas

相关问题