有没有办法在testng.xml并行运行两个.xml文件?

我目前有两个不同的TestSuite(SUITE1.XML和SUITE2.xml),配置不同(例如浏览器,Os)……

我把testng.xml里面的两个SUIT调用在saucelabs上运行……它运行良好……只有我关心的是,我希望这些套件能够并行而不是顺序运行……

我得到的输出是

 [TestNG]正在运行:
   /Users/muzamilabbasi/Automation/BaublebarTest/Suite1.xml

这是浏览器字符串FIREFOX
这是Platform String WIN8
这是版本字符串25
这是浏览器字符串FIREFOX
这是Platform String WIN8
这是版本字符串25
 log4j:WARN没有为logger找到appender(org.apache.http.client.protocol.RequestAddCookies)。
 log4j:WARN请正确初始化log4j系统。
 log4j:WARN没有为logger找到appender(org.apache.http.client.protocol.RequestAddCookies)。
 log4j:WARN请正确初始化log4j系统。
页面标题是谷歌
页面标题是谷歌

 ===============================================
 mysuite1
总测试运行:2,失败:0,跳过:0
 ===============================================

 [TestNG]正在运行:
   /Users/muzamilabbasi/Automation/BaublebarTest/Suite2.xml

这是浏览器字符串FIREFOX
这是Platform String XP
这是Version String 7
这是浏览器字符串FIREFOX
这是Platform String XP
这是Version String 7
页面标题是谷歌
页面标题是谷歌

我搜索过很多网页,而且我得到的答案大部分都是使用我可以实现的ANT {PARALLEL}任务,但是如何? 我需要一个例子..请帮忙。

我正在使用macOS和TESTNG 6.8.6

另一种选择是使用套件套件。 我会说这已经有一段时间了,因为我已经使用了这个设置,但希望你能在这里找到足够的细节至少开始。

首先,您将定义两个(或更多)套件XML文件:

          

和…

           

然后,您将定义套件套件XML文件:

       

请注意, suite-file路径值是从当前套件XML文件到您正在调用的XML文件的相对路径。 如果它们在同一目录中,只需文件名就足够了。

此外,两种XML类型都支持标记。 标准套件XML将在级别读取,我发现套件XML文件的级别的标签也可以正常工作。

最后,在执行时,您只需要传递套件套件XML文件作为套件文件参数。

编辑:这是我能够让我的两个套件并行运行的方式。 诀窍是正确设置我的main()方法。

 public class TestRunner { public static void main(String[] args) { TestNG testng = new TestNG(); TestListenerAdapter adapter = new TestListenerAdapter(); List suites = new ArrayList(); testng.addListener(adapter); suites.add(args[0]); testng.setTestSuites(suites); testng.setParallel("parallel"); testng.setSuiteThreadPoolSize(5); testng.setOutputDirectory("path to output"); testng.run(); } } 

然后,在命令行上:

 java -jar ParallelSuiteDemo.jar SuiteOfSuites.xml 

请注意,我的jar和所有xml文件都与此配置位于同一目录中。 如果希望使用目录结构,则需要正确配置命令行args和条目。

这产生了我在Selenium Grid上并行运行的两个suite.xml文件。

说实话,可能有更好的方法。 当我尝试做类似的事情时,这正是对我有用的。

你不需要并行运行套装….相反,你可以在单个testng.xml套装中编写两个测试,并且可以并行运行它。

如果要为不同的测试(浏览器/操作系统等)使用两种不同的配置,请将其作为testng.xml中的参数,并使用selenium grid将每个线程重定向到适当的节点

看看下面的例子

                 

也可以使用ANT或MAVEN运行两个testng.xml套装。 但我更喜欢第一个。 请在MAVEN项目的pom.xml中添加以下部分

  src   org.apache.maven.plugins maven-surefire-plugin 2.17   testng1.xml testng2.xml  ${basedir}/src/test/java/ true     

是的,您可以使用testng的“suitethreadpoolsize”属性来完成此操作

     

有关详细信息,请访问testng的官方网站http://testng.org/doc/documentation-main.html#parallel-running

谢谢!