Java代码执行testng.xml和失败后重跑

执行带有失败结果的用例

准备一个TestNG用例
新建ReRunFailedTestCaseDemo类,代码如下

package com.course.testng;

import org.testng.Assert;
import org.testng.annotations.Test;

public class ReRunFailedTestCaseDemo {

	@Test
	public void test01() {
		System.out.println("test01");
	}
	
	@Test(dependsOnMethods = "test03",alwaysRun = true)
	public void test02() {
		System.out.println("test02");
	}
	
	@Test
	public void test03() {
		Assert.assertTrue(10==11);
		System.out.println("test03");
	}
	
	@Test(dependsOnMethods = "test05",alwaysRun = true)
	public void test04() {
		System.out.println("test04");
	}
	
	@Test
	public void test05() {
		Assert.assertTrue(12==13);
		System.out.println("test05");
	}
}

新建xml文件,代码如下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Default Suite">
	<test name="Testng_learn">
		<classes>
			<class name="com.course.testng.ReRunFailedTestCaseDemo"/>
		</classes>
	
	</test>

</suite>

测试结果
在这里插入图片描述

利用Java编程去实现运行相关testng.xml文件

新建RunTestNG类,代码如下

package com.course.testng;


import java.util.ArrayList;
import java.util.List;

import org.testng.TestNG;

public class RunTestNG {

	public static void main(String[] args) throws InterruptedException{
		
		TestNG testNG = new TestNG();
		List<String> suites = new ArrayList<String>();
		suites.add(".\\src\\main\\resources\\ReRunFailedTestCaseDemo.xml");
		testNG.setTestSuites(suites);
		testNG.run();
		
		//等待执行结束,然后去执行失败用例
		TestNG testNG1= new TestNG();
		List<String> suites1 = new ArrayList<String>();
		Thread.sleep(5000);
		suites1.add(".\\test-output\\testng-failed.xml");
		testNG1.setTestSuites(suites1);
		testNG1.run();
		
	}
}

测试结果
在这里插入图片描述

看控制台日志,显示先运行了testng.xml,然后在运行testng-failed.xml,所以,达到了我想要的目的。以上,重点是如何Java代码是实现testng.xml文件的运行用例,至于失败重跑,上面是我个人的方法,网上还有一种方法,是修改Testng监听类然后写一个重跑的方法来实现,我个人认为没有这个必要,如果后面我们介绍了监听,然后在来看看这第二个方法的实现过程,到时候我们再和这么内容对比,然后选择你认为适合你项目的失败重跑方案。
提示:知道了如何运行一个testng.xml文件,那么就知道如何运行几百条测试用例。举例,我们有一个webui自动化项目,有几百条测试用例。一般我们都一个模块用一个testng.xml文件来进行管理或者一个testng.xml文件管理多个模块或者全量测试用例。然后写一个main方法,然执行测试的人员选择不同模块的代号,通过case语句,我们就可以实现去调用执行不同模块下的testng.xml文件,这个过程完全可以放到Jenkins上做或者cmd命令行


猜你喜欢

转载自blog.csdn.net/weixin_42884654/article/details/82966711