天天看点

testng的报告自定义笔记二

效果图:

<a href="https://s1.51cto.com/wyfs02/M01/07/6C/wKiom1nJsOyxUnz-AAHO1pMfE-w113.jpg-wh_500x0-wm_3-wmp_4-s_1643692214.jpg" target="_blank">        </a>

声明:是在长辈下的代码修改

代码:

package com.rpoter;

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;

/** 手机型号 */

private String Mobile_phone = "小米";

/** 测试包名 */

private String package_name = "com.systoon.beijingtoon";

/** 版本号 */

private String versionName = "1.8.1";

/** 手机系统版本 */

private String MobileSystem = "安卓5.6";

/** 通过 */

public int Passed = 22;

/** 失败 */

public int Failed = 10;

/** 跳过 */

public int Skipped = 2;

//public String reportName = formateDate() + ".html";

//File htmlReportDir = new File("test-output/customizeHtml-report");

public void onStart(ITestContext context ) {

File htmlReportDir = new File("test-output/Test-report");

if (!htmlReportDir.exists()) {

htmlReportDir.mkdirs();

}

String reportName = formateDate() +"index"+".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();

String val = "&lt;!DOCTYPE html PUBLIC \"-//W3C//DTDXHTML1.0Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"&gt;&lt;html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\"&gt;&lt;head&gt;&lt;head&gt;&lt;meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /&gt;"

+ "&lt;style&gt;table {border-collapse: collapse;}.table1  tr th {color:DarkGreen;background-color: AntiqueWhite;} &lt;/style&gt;"

+ "&lt;title &gt;UI自动化测试报告&lt;/title&gt;&lt;/head&gt;&lt;body style=\"background-color:#FAEBD7;\"&gt;"

+ "&lt;div id=\"top\" align=\"center\"&gt;&lt;p style=\"font-weight:bold;\"&gt;&lt;h2&gt;UI自动化测试用例运行结果列表&lt;/h2&gt;&lt;/p&gt;"

+ "&lt;table border=\"1\" width=\"90%\" height=\"66\" table1&gt;" + "&lt;tr&gt;" + "&lt;th&gt;手机型号&lt;/th&gt;" + "&lt;th&gt;测试包名&lt;/th&gt;"

+ "&lt;th&gt;版本号&lt;/th&gt;" + "&lt;th&gt;手机系统版本&lt;/th&gt;" + "&lt;th&gt;通过&lt;/th&gt;" + "&lt;th&gt;失败&lt;/th&gt;" + "&lt;th&gt;跳过&lt;/th&gt;" + "&lt;/tr&gt;" + "&lt;tr&gt;"

+ "&lt;td&gt;" + Mobile_phone + "&lt;/td&gt;" + "&lt;td&gt;" + package_name + "&lt;/td&gt;" + "&lt;td&gt;" + versionName + "&lt;/td&gt;"

+ "&lt;td&gt;" + MobileSystem + "&lt;/td&gt;" + "&lt;td&gt;" + Passed + "&lt;/td&gt;" + "&lt;td&gt;" + Failed + "&lt;/td&gt;" + "&lt;td&gt;"

+ Skipped + "&lt;/td&gt;" + "&lt;/tr&gt;" + " &lt;/table&gt;"

+ "&lt;tbody style=\"word-wrap:break-word;font-weight:bold;\" align=\"center\"&gt;&lt;h2&gt;详 情&lt;/h2&gt;";

sb.append(val);

String Detailed_Situation = "&lt;table width=\"90%\" height=\"80\" border=\"1\" align=\"center\" cellspacing=\"0\" rules=\"all\" style=\"table-layout:relative;\"&gt;"

+ "&lt;thead&gt;" + "&lt;th&gt;用例序列号&lt;/th&gt;" + "&lt;th&gt;用例模块&lt;/th&gt;" + "&lt;th&gt;失败原因&lt;/th&gt;" + "&lt;th&gt;结果&lt;/th&gt;" + "&lt;th&gt;截图&lt;/th&gt;"

+ "&lt;/thead&gt;";

sb.append(Detailed_Situation);

String res = sb.toString();

Files.write((Paths.get(reportPath)), res.getBytes("utf-8"));

@Override

public void onTestSuccess(ITestResult result) {

StringBuilder sb = new StringBuilder("&lt;tr&gt;&lt;td&gt;通过序列号-&lt;/td&gt;&lt;td&gt;111");

sb.append("序列号");

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

sb.append("&lt;/td&gt;&lt;td&gt;该用例测试通过&lt;/td&gt;&lt;td&gt;&lt;font color=\"#00FF00\"&gt;Passed&lt;/font&gt;&lt;/td&gt;&lt;/td&gt;&lt;td&gt;通过没有截图");

sb.append(result.getMethod().getSuccessPercentage());

sb.append("%通过没有截图&lt;/tr&gt;");

Files.write((Paths.get(reportPath)), res.getBytes("utf-8"), StandardOpenOption.APPEND);

public void onTestFailure(ITestResult result) {

StringBuilder sb = new StringBuilder("&lt;tr&gt;&lt;td&gt;跳过序列号1&lt;/td&gt;&lt;td&gt;");

sb.append("&lt;/td&gt;&lt;td&gt;");

sb.append("&lt;p align=\"left\"&gt;测试用例执行&lt;font color=\"red\"&gt;失败&lt;/font&gt;,原因:&lt;br&gt;");

Throwable throwable1 = result.getThrowable();

sb.append(throwable1.getMessage());

sb.append("&lt;br&gt;&lt;a style=\"background-color:#CCCCCC;\"&gt;");

sb.append("B&lt;/td&gt;&lt;td&gt;&lt;font color=\"red\"&gt;Failed&lt;/font&gt;&lt;/td&gt;&lt;td&gt;&lt;br&gt;");

/** 堆栈信息单元测试需要 */

/*

 * sb.append("&lt;br&gt;&lt;br&gt;"); StackTraceElement[] se =

 * throwable.getStackTrace(); sb.append("堆栈信息:"); sb.append("&lt;br&gt;"); for

 * (StackTraceElement e : se) { sb.append(e.toString());

 * sb.append("&lt;br&gt;"); }

 */

sb.append("&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;");

public void onTestSkipped(ITestResult result) {

sb.append("&lt;p align=\"left\"&gt;测试用例&lt;font color=\"red\"&gt;跳过&lt;/font&gt;,原因:&lt;br&gt;");

sb.append("B&lt;/td&gt;&lt;td&gt;&lt;font color=\"#FFA500\"&gt;Skipped&lt;/font&gt;&lt;/td&gt;&lt;td&gt;");

sb.append("&lt;/a&gt;&lt;/p&gt;跳过注释&lt;/td&gt;&lt;/tr&gt;");

public void onFinish(ITestContext testContext) {

StringBuilder sb = new StringBuilder("&lt;/tbody&gt;&lt;/table&gt;&lt;a href=\"#top\"&gt;自动化测试部&lt;/a&gt;&lt;/div&gt;&lt;/body&gt;");

sb.append("&lt;/html&gt;");

String msg = sb.toString();

Files.write((Paths.get(reportPath)), msg.getBytes("utf-8"), StandardOpenOption.APPEND);

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);

本文转自 知止内明 51CTO博客,原文链接:http://blog.51cto.com/357712148/1968680,如需转载请自行联系原作者

继续阅读