天天看點

testng的報告自定義筆記

自定義報告學習筆記一

    效果圖:

<a href="https://s4.51cto.com/wyfs02/M02/A6/1E/wKioL1nJsACBK4v9AACRe2DNhho701.jpg-wh_500x0-wm_3-wmp_4-s_3099164702.jpg" target="_blank">        </a>

在長輩的代碼下,自己修改:

package com.rpoter;

import java.io.File;

import java.io.IOException;

import java.io.UnsupportedEncodingException;

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 java.util.List;

import java.util.Map;

import java.util.Set;

import org.testng.IReporter;

import org.testng.ISuite;

import org.testng.ISuiteResult;

import org.testng.ITestContext;

import org.testng.ITestResult;

import org.testng.reporters.HtmlHelper;

import org.testng.xml.XmlSuite;

public class Reporter implements IReporter {

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 = 0;

/** 失敗 */

public int Failed = 0;

/** 跳過 */

public int Skipped = 0;

@Override

public void generateReport(List&lt;XmlSuite&gt; xmlSuites, List&lt;ISuite&gt; suites, String outputDirectory) {

File htmlReportDir = new File("test-output/Test-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();

StringBuffer sb = new StringBuffer();

    String title = "UI自動化測試用例運作結果清單";

    sb.append("&lt;html&gt;\n&lt;head&gt;&lt;title&gt;UI自動化測試報告&lt;/title&gt;")

      .append(HtmlHelper.getCssString("."))

      .append("&lt;/head&gt;&lt;body style=\"background-color:#FAEBD7;\"&gt;\n")

      .append("&lt;h2&gt;&lt;p align='center'&gt;").append(title).append("&lt;/p&gt;&lt;/h2&gt;\n")

      .append("&lt;table border='1' width='90%'&gt;")

      .append("&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;th&gt;詳情 &lt;/th&gt;&lt;/tr&gt;\n");

String res = sb.toString();

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

 for (ISuite suite : suites) {

            Map&lt;String, ISuiteResult&gt; tests = suite.getResults();

            for (ISuiteResult r : tests.values()) {

                ITestContext overview = r.getTestContext();

                System.err.println("suite: " + overview.getName());

                System.err.println("Stard Time: "+overview.getStartDate());

                System.err.println("End Time: "+overview.getEndDate());

                System.err.println("all methods num : "+overview.getAllTestMethods().length);

                //passed

                Passed = overview.getPassedTests().size();

                System.err.println("passed: " + overview.getPassedTests().size());

                Set&lt;ITestResult&gt; passedSet = overview.getPassedTests().getAllResults();

                for(ITestResult p : passedSet){

                    System.err.println("class: " +p.getTestClass().getName() + " | method: "+p.getName());

                }

                //failed

                Failed = overview.getFailedTests().size();

                System.err.println("failed: " + overview.getFailedTests().size());

                Set&lt;ITestResult&gt; failedSet = overview.getFailedTests().getAllResults();

                for(ITestResult f : failedSet){

                    System.err.println("class: " +f.getTestClass().getName()+ " | method: "+f.getName() + " | error: "+ f.getThrowable());

                //skipped

                Skipped = overview.getSkippedTests().size();

                System.err.println("skipped: " + overview.getSkippedTests().size());

                Set&lt;ITestResult&gt; skippedSet = overview.getSkippedTests().getAllResults();

                for(ITestResult s : skippedSet){

                    System.err.println("---- " +s.getName() );

                    System.err.println(s.getThrowable());

                System.err.println("==================================");

            }

        }

     String reportN = "file:///D:/TOOL/JAVAspace/JmeterTest/"+htmlReportDir+"/"+formateDate() +"index"+".html";

StringBuilder sb1 = new StringBuilder();

sb1.append("&lt;td&gt;"+Mobile_phone+"&lt;/td&gt;&lt;td&gt;"+MobileSystem+"&lt;/td&gt;&lt;td&gt;"+versionName+"&lt;/td&gt;&lt;td&gt;"+package_name+"&lt;/td&gt;");

sb1.append("&lt;td&gt;"+Passed+"&lt;/td&gt;&lt;td&gt;"+Failed+"&lt;/td&gt;&lt;td&gt;"+Skipped+"&lt;/td&gt;&lt;td&gt;連結位址為: "+reportN+"");

sb1.append("&lt;a href='").append(reportN).append("&lt;/a&gt;&lt;/td&gt;\n");

    sb1.append("&lt;/table&gt;&lt;br/&gt;");

        sb1.append("&lt;/body&gt;&lt;/html&gt;\n");

    String res1 = sb1.toString();

Files.write((Paths.get(reportPath)), res1.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/1968679,如需轉載請自行聯系原作者

繼續閱讀