Muz*_*asi 2 java testng saucelabs
我目前有两个不同的TestSuite(SUITE1.XML和SUITE2.xml),配置不同(例如浏览器,Os)......
我把testng.xml里面的两个SUIT调用在saucelabs上运行......它运行良好......只有我关心的是,我希望这些套件能够并行而不是顺序运行...
我得到的输出是
[TestNG] Running: /Users/muzamilabbasi/Automation/BaublebarTest/Suite1.xml This is Browser String FIREFOX This is Platform String WIN8 This is Version String 25 This is Browser String FIREFOX This is Platform String WIN8 This is Version String 25 log4j:WARN No appenders could be found for logger (org.apache.http.client.protocol.RequestAddCookies). log4j:WARN Please initialize the log4j system properly. log4j:WARN No appenders could be found for logger (org.apache.http.client.protocol.RequestAddCookies). log4j:WARN Please initialize the log4j system properly. Page Title isGoogle Page Title isGoogle =============================================== mysuite1 Total tests run: 2, Failures: 0, Skips: 0 =============================================== [TestNG] Running: /Users/muzamilabbasi/Automation/BaublebarTest/Suite2.xml This is Browser String FIREFOX This is Platform String XP This is Version String 7 This is Browser String FIREFOX This is Platform String XP This is Version String 7 Page Title isGoogle Page Title isGoogle
我已经搜索了很多网页,而且我得到的答案主要是使用我可以实现的ANT {PARALLEL}任务,但是如何?我需要一个例子..请帮忙.
我正在使用macOS和TESTNG 6.8.6
另一种选择是使用套件套件.我会说这已经有一段时间了,因为我已经使用了这个设置,但希望你能在这里找到足够的细节至少开始.
首先,您将定义两个(或更多)套件XML文件:
<suite name="Suite1">
<test name="test1">
<classes>
<class name="fully.qualified.ClassName" />
</classes>
<methods>
<include name="method1" />
</methods>
</test>
</suite>
Run Code Online (Sandbox Code Playgroud)
和...
<suite name="Suite2">
<test name="test2">
<classes>
<class name="fully.qualified.ClassName" />
</classes>
<methods>
<include name="method2" />
</methods>
</test>
</suite>
Run Code Online (Sandbox Code Playgroud)
然后,您将定义套件套件XML文件:
<suite name="suite of suites">
<suite-files>
<suite-file path="Suite1.xml" />
<suite-file path="Suite2.xml" />
</suite-files>
</suite>
Run Code Online (Sandbox Code Playgroud)
请注意,suite-file路径值是从当前套件XML文件到您正在调用的XML文件的相对路径.如果它们在同一目录中,只需文件名就足够了.
此外,两种XML类型都支持该<parameter>标记.标准套件XML将<suite>在<test>级别和级别读取,我发现套件XML文件级别的<parameter>标签<suite>也可以正常工作.
最后,在执行时,您只需要传递套件套件XML文件作为套件文件参数.
编辑:这是我能够让我的两个套件并行运行的方式.诀窍是main()正确设置我的方法.
public class TestRunner
{
public static void main(String[] args)
{
TestNG testng = new TestNG();
TestListenerAdapter adapter = new TestListenerAdapter();
List<String> suites = new ArrayList<String>();
testng.addListener(adapter);
suites.add(args[0]);
testng.setTestSuites(suites);
testng.setParallel("parallel");
testng.setSuiteThreadPoolSize(5);
testng.setOutputDirectory("path to output");
testng.run();
}
}
Run Code Online (Sandbox Code Playgroud)
然后,在命令行上:
java -jar ParallelSuiteDemo.jar SuiteOfSuites.xml
Run Code Online (Sandbox Code Playgroud)
请注意,我的jar和所有xml文件都与此配置位于同一目录中.<suite-file>如果希望使用目录结构,则需要正确配置命令行参数和条目.
这产生了我在Selenium Grid上并行运行的两个suite.xml文件.
说实话,可能有更好的方法.当我尝试做类似的事情时,这正是对我有用的.