如何使用 testng.xml 实现多个测试用例的连续执行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用 testng.xml 实现多个测试用例的连续执行相关的知识,希望对你有一定的参考价值。
参考技术A <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite thread-count="3" name="Suite" parallel="tests">
<test name="ie">
<classes>
<class name="test.script.Dchrome1"/>
<class name="test.script.Dchrome2"/>
<class name="test.script.Dchrome3"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->本回答被提问者采纳
使用 maven 在 Testng.xml 中动态选择测试用例
【中文标题】使用 maven 在 Testng.xml 中动态选择测试用例【英文标题】:Dynamic selection of testcases on Testng.xml using maven 【发布时间】:2020-01-30 12:18:07 【问题描述】:我在 testng.xml 文件中定义了一组测试套件,我正在从 pom.xml 文件中传递一个参数来调用 testng 文件
但是我需要一个解决方案,我可以通过一个参数作为环境变量来决定我想从 testng.xml 执行哪个套件
我最初的想法是拥有多个 testng.xml 文件,但拥有多个文件似乎不是最好的解决方案
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
<test name="Sanity">
<classes>
<class name="com.ibm.wce.scbn.cc.runner.Sanity" />
</classes>
</test>
</suite>
<suite name="Suite">
<test name="Regression">
<classes>
<class name="com.ibm.wce.scbn.cc.runner.Reg" />
</classes>
</test>
</suite>
Pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
<configuration>
<!-- TestNG Suite XML files list for test execution -->
<suiteXmlFiles>
<suiteXmlFile>$suiteXmlFile</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
VM 参数:mvn clean install -DsuiteXmlFile=testng.xml,testng2.xml
【问题讨论】:
【参考方案1】:我认为您正在 maven 中寻找 profiles
。更多信息请关注here
在您的 pom.xml 中,添加 profiles
部分,您的 plugins
进入 <pluginManagement>
内的 build
标记,如下所示
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<build>
<sourceDirectory>src</sourceDirectory>
<resources>
<resource>
<directory>src</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<pluginManagement>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>suite1.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>suite1</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>testng-customsuite.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>suite2</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>suite2.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<dependencies>
....
</dependencies>
然后基于profiles
,您可以从命令行激活这样的profile
,然后执行该配置文件中提到的suite
mvn clean test -P suite2
注意
<pluginManagement>
- 定义插件
<plugins>
- 激活插件
<profile>
- 根据您在命令行中传递的内容运行合适的插件
这些配置文件也可以通过环境变量激活
来自以上链接Supported variables are system properties like $user.home and environment variables like $env.HOME
编辑: 看看this,这似乎表明您尝试做的事情可能是不可能的,但您可以尝试第二种解决方案。这就是我从官方网站复制粘贴的上述文字时的意思。
【讨论】:
感谢您的信息。上述方法需要多个testng xml文件。但是我的要求是我在 testng.xml 中定义了套件 1、2、3、4。在运行时我想选择套件 1 或 2 或同时选择两者 定义单独的 xml 文件有什么问题?您仍然可以从一个主套件文件运行这些套件以上是关于如何使用 testng.xml 实现多个测试用例的连续执行的主要内容,如果未能解决你的问题,请参考以下文章