我有两个testng XML文件 例如:testng1.xml& testng2.xml
我需要在不同浏览器或同一浏览器中并行执行这两个XML文件。请建议我如何实现这种情况。
答案 0 :(得分:2)
这取决于您在testing.xml
文件中配置课程的方式。
您甚至可以使用单个testing.xml
文件在同一浏览器或不同浏览器上并行运行测试。
对于配置,您可以使用以下示例文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Parallel Test" parallel="classes">
<test name="Functional_Test_1">
<parameter name="browser" value="PhantomJS" />
<classes>
<class name="com.simpletest.DriverSerup"/>
</classes>
</test>
<test name="Functional_Test_2">
<parameter name="browser" value="chrome" />
<classes>
<class name="com.simpletest.DriverSerup"/>
</classes>
</test>
</suite>
这就是设置浏览器执行测试的方法:
package com.simpletest;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class DriverSerup {
@BeforeTest
@Parameters("browser")
public void setUp(String browser)
{
switch(browser)
{
case "chrome":
// Write the code here for open chrome browser
System.out.println("For Browser : " + browser);
break;
case "PhantomJS":
// Write the code here for open PhantomJS browser
System.out.println("For Browser : " + browser);
break;
default :
System.out.println("Broweer choice not available");
}
}
}
在您创建的两个<test>
代码中提及您自动化的所有课程。
或者,如果你有2 testing.xml
,那么配置如下:
<强> testing1.xml 强>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Parallel suite 1" >
<test name="Functional_Test_1">
<parameter name="browser" value="PhantomJS" />
<classes>
<class name="com.simpletest.DriverSerup"/>
</classes>
</test>
</suite>
<强> testing2.xml 强>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Parallel suite 2">
<test name="Functional_Test_2">
<parameter name="browser" value="chrome" />
<classes>
<class name="com.simpletest.DriverSerup"/>
</classes>
</test>
</suite>
在这里你必须创建套件套件,即 combineuite.xml :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="suite of suites" parallel="classes" thread-count="2" >
<suite-files>
<suite-file path="testing1.xml" />
<suite-file path="testing2.xml" />
</suite-files>
</suite>
注意:请勿忘记在parallel
标记中提及并行性的suite
属性。
答案 1 :(得分:0)
对于我的场景,只有在testng1.xml文件中执行所有测试后才会触发testng2.xml文件。
请参阅以下示例。
<强> Testng1.xml 强>
FROM microsoft/dotnet:1.1-sdk-projectjson
<强> Testng2.xml 强>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Parallel suite 1" >
<test name="Functional_Test_1">
<parameter name="browser" value="Chrome" />
<classes>
<class name="com.simpletest.sample1"/>
</classes>
</test>
<test name="Functional_Test_2">
<classes>
<class name="com.simpletest.sample2"/>
</classes>
</test>
</suite>
然后我创建了 combineuite.xml 文件,我在其中配置了两个testng.xml文件并触发了它。
在这种情况下,只有在 testng1.xml 文件完成后才会触发 testng2.xml 文件。
因此,可以帮助我在任何浏览器中并行运行这两个xml文件。