最近尝试了通过jenkins构建,通过执行testNG的XML文件调用测试类,并将外部参数传递给testNG,过程比较简单。
一、配置maven
配置2项,一个是要执行的xml文件,变量名xmlFileName,一个是要传递的参数cookie。
<build> <plugins> <plugin> <!--该插件是解决命令下执行mvn test指定testng xxx.xml 文件 的配置--> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.0</version> <configuration> <!--为了解决在jenkins maven执行test 报告乱码问题,编码格式设置为UTF-8--> <argLine>-Dfile.encoding=UTF-8</argLine> <encoding>UTF-8</encoding> <!--动态指定执行的xml文件。${project.basedir}项目目录,${xmlFileName}maven文件--> <suiteXmlFiles> <suiteXmlFile>${project.basedir}/target/classes/testNg/${xmlFileName}</suiteXmlFile> </suiteXmlFiles> <systemPropertyVariables> <testEnvironment>${cookie}</testEnvironment> </systemPropertyVariables> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>8</source> <target>8</target> </configuration> </plugin> </plugins> </build>二、配置jenkins
增加2个参数,一个是要执行的xml文件,一个是参数cookie,和maven里的一致,通过maven将参数传入。
三、配置testNG的XML文件
这里的com.yunzhanghu.core.ExtentTestNGIReporterListener监听器是为了生成测试报告,和此篇文章无关。
但一定要增加<parameter name="cookie" value="${cookie}"></parameter>
该xml文件目录在target/classes/testNg/下
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="自动化" > <listeners> <listener class-name="com.yunzhanghu.core.ExtentTestNGIReporterListener" /> </listeners> <parameter name="cookie" value="${cookie}"></parameter> <test name="version" preserve-order="true"> <classes> <class name="com.yunzhanghu.testcase.PaymentBvtStage"> <methods> <include name="bills_order_realtime"/> <include name="bills_order_wxpay"/> <include name="bills_order_alipay"/> <include name="waittime"/> <include name="assert_order"/> </methods> <!--<class name="com.yunzhanghu.testcase.PaymentBvt">--> </class> </classes> </test>四、在测试类里增加@Paramters注释获取参数cookie
@BeforeClass @Parameters({"cookie"}) public static void before(String cookie) throws Exception { System.out.println(cookie); // TODO }