如何使用 Selenium 在同一浏览器中同时使用不同的实例运行多个 TestNG.XML 文件。
我的 testng.xml 文件测试套件中有大量测试类。
Testng.xml1
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite1.xml">
<test name="Test Cases1">
<classes>
<class name="com.test1" />
</classes>
</test>
<test name="Test Cases2">
<classes>
<class name="com.test2" />
</classes>
</test>
</suite>
Testng.xml2
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite2.xml">
<test name="Test Cases1">
<classes>
<class name="com.test1" />
</classes>
</test>
<test name="Test Cases2">
<classes>
<class name="com.test2" />
</classes>
</test>
</suite>
我想同时运行 Suite1.xml 和 Suite2.xml,这意味着每个套件的第一个测试用例应该同时在同一浏览器中运行,但使用不同的实例。
我尝试并行运行套件文件,但它对我不起作用。
Testng.xml3
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="RegressionSuite.xml" thread-count="10" verbose="2" parallel="test">
<suite-files>
<suite-file
path="Suite1.xml">
</suite-file>
<suite-file
path="Suite2.xml">
</suite-file>
</suite-files>
</suite>
在同一浏览器中使用 Selenium 但使用不同的实例同时运行多个 TestNG XML 文件涉及多线程方法。此设置允许您并行执行单独的测试,每个测试都在其自己的浏览器实例中。以下是实现这一目标的方法:
准备 TestNG XML 文件 首先,确保您已为测试配置了 TestNG XML 文件。假设您有两个 TestNG XML 文件:testng1.xml 和 testng2.xml。
配置 Selenium WebDriver 进行并行执行 确保您的测试类(TestClass1、TestClass2 等)已设置为实例化它们自己的 WebDriver 实例。这对于并行执行至关重要。
公共类TestClass1 { 私有 WebDriver 驱动程序;
@BeforeMethod
public void setUp() {
// Initialize the WebDriver instance
System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
driver = new ChromeDriver();
}
@Test
public void testMethod1() {
// Your test code here
}
@AfterMethod
public void tearDown() {
if (driver != null) {
driver.quit();
}
}
}
对 TestClass2 和您可能拥有的任何其他测试类重复类似的设置。
使用 Maven 运行(如果使用 Maven) 如果您使用 Maven,您可以在 pom.xml 中配置 Surefire-plugin 来运行多个套件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>testng1.xml</suiteXmlFile>
<suiteXmlFile>testng2.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
并运行:
mvn test
以编程方式运行 您还可以以编程方式运行 TestNG 套件:
public class TestRunner {
public static void main(String[] args) {
TestNG testng = new TestNG();
List<String> suites = Lists.newArrayList();
suites.add("path/to/testng1.xml"); // path to XML file.
suites.add("path/to/testng2.xml");
testng.setTestSuites(suites);
testng.run();
}
}
此设置在自己的线程中启动每个套件,遵循每个 XML 文件中的并行设置。套件中的每个测试都会创建自己的 WebDriver 实例,允许它们同时在单独的浏览器实例中运行。
注意: 确保您的系统有足够的资源来处理多个浏览器实例。 并行运行测试时,测试隔离至关重要;确保您的测试不会互相干扰。 WebDriver 设置 (System.setProperty) 路径和选项可能需要根据您的具体设置和浏览器选择进行调整。