selenium webdriver+testng自定义html测试报告

运行testng.xml生成的测试报告index.html打开速度慢,不够直观,还有一些bug;所以琢磨着自己简单的设计一个html,然后利用java拼接html的方法,最后利用testng的listener监听器,生成报告。

一、预期效果:

selenium webdriver+testng自定义html测试报告_第1张图片

二、简单自定义html模板:



	
	UI自动化测试报告


	

测试用例运行结果列表

测试用例名 测试用例结果
com.wiley.1 Passed
com.wiley.2 Skipped

测试用例跳过,原因:

qeqeqweqweqeq

com.wiley.3 Failed

测试用例执行失败,原因:

jfaodufpasdfasssssssssssssssssssssssssssssssssssssssssssss

返回顶部

三、java拼接:

package com.wiley.listener;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import org.testng.ITestContext;
import org.testng.ITestResult;
import org.testng.TestListenerAdapter;

public class TestReport extends TestListenerAdapter{

	private String reportPath;

	@Override
	public void onStart(ITestContext context) {
		File htmlReportDir = new File("test-output/customizeHtml-report");  
        if (!htmlReportDir.exists()) {  
        	htmlReportDir.mkdirs();  
        }  
        String reportName = formateDate()+".html";  
        reportPath = htmlReportDir+"/"+reportName;  
        File report = new File(htmlReportDir,reportName);  
        if(report.exists()){  
            try {  
                report.createNewFile();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }  
        StringBuilder sb = new StringBuilder(""
				+ "UI自动化测试报告"
				+ "

测试用例运行结果列表

" + "" + "" + "" + "" + "" + "" + "" + ""); String res = sb.toString(); try { Files.write((Paths.get(reportPath)),res.getBytes("utf-8")); } catch (IOException e) { e.printStackTrace(); } } @Override public void onTestSuccess(ITestResult result) { StringBuilder sb = new StringBuilder(""); String res = sb.toString(); try { Files.write((Paths.get(reportPath)),res.getBytes("utf-8"),StandardOpenOption.APPEND); } catch (IOException e) { e.printStackTrace(); } } @Override public void onTestSkipped(ITestResult result) { StringBuilder sb = new StringBuilder(""); String res = sb.toString(); try { Files.write((Paths.get(reportPath)),res.getBytes("utf-8"),StandardOpenOption.APPEND); } catch (IOException e) { e.printStackTrace(); } } @Override public void onTestFailure(ITestResult result) { StringBuilder sb = new StringBuilder(""); String res = sb.toString(); try { Files.write((Paths.get(reportPath)),res.getBytes("utf-8"),StandardOpenOption.APPEND); } catch (IOException e) { e.printStackTrace(); } } @Override public void onFinish(ITestContext testContext) { StringBuilder sb = new StringBuilder("
测试用例名测试用例结果
"); sb.append(result.getMethod().getRealClass()+"."+result.getMethod().getMethodName()); sb.append("Passed
"); sb.append(result.getMethod().getRealClass()+"."+result.getMethod().getMethodName()); sb.append("Skipped"); sb.append("

测试用例跳过,原因:
"); sb.append("
"); Throwable throwable = result.getThrowable(); sb.append(throwable.getMessage()); sb.append("

"); sb.append(result.getMethod().getRealClass()+"."+result.getMethod().getMethodName()); sb.append("Failed
"); sb.append("

测试用例执行失败,原因:
"); sb.append("
"); Throwable throwable = result.getThrowable(); sb.append(throwable.getMessage()); sb.append("

返回顶部
"); sb.append(""); String msg = sb.toString(); try { Files.write((Paths.get(reportPath)),msg.getBytes("utf-8"),StandardOpenOption.APPEND); } catch (IOException e) { e.printStackTrace(); } } public static String formateDate(){ SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss"); Calendar cal = Calendar.getInstance(); Date date = cal.getTime(); return sf.format(date); } }

四、testng.xml中添加监听器:


        

五、实际效果:

selenium webdriver+testng自定义html测试报告_第2张图片

六、后记

如果你懂得一些html和js的基本知识,自己设计html,然后套用上面的TestReport.class这个类,你就可以不断完善你自己的测试报告。下图就是我在上面的模板基础上完善的,感觉还不错吧,相信你会做得更好~~

selenium webdriver+testng自定义html测试报告_第3张图片

你可能感兴趣的:(selenium)