报告生成

一般我们写的脚本可能覆盖了较多的测试项,而且可能持续运行了一段时间,本文将教各位实现在执行完自动化脚本后自动生成一份美化报告

package ts.dw.logic;
 
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
 
public class HTMLLOG {
	static GregorianCalendar time = new GregorianCalendar();	
	public static String filePath = "";
	public static String reportGenerated = "";
 
	//写入HTML
	public void generateReport()throws Exception{
	    reportGenerated="true";  
	    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
	    Calendar cal = Calendar.getInstance();
	    String timeStamp=dateFormat.format(cal.getTime());
	    //String path = System.getProperty("user.dir")+"log";
	    filePath = "log\\"+"Regression_Result-"+"-"+timeStamp+".html";
	    FileWriter fstream = new FileWriter(filePath);
	    System.out.println("Report's FileName: "+filePath);
	    BufferedWriter out = new BufferedWriter(fstream);
	    out.write("html");
	    out.write("head");
	    //out.write("meta http-equiv='Content-Type' content='text/html; charset=utf-8'");
	    out.write("style type='text/css' " 
	    	  + " #summary" 
	  	      + " {"
	  	      + " font-family:\"Trebuchet MS\", Arial, Helvetica, sans-serif;"
	  	      + " width:100%;"
	  	      + " border-collapse:collapse;"
	  	      + " }"
	  	      + " #summary td, #summary th"
	  	      + " {"
	  	      + " font-size:0.8em;"
	  	      + " border:1px solid #98bf21;"
	  	      + " padding:3px 7px 2px 7px;"
	  	      + " }"
	  	      + " #summary th"
	  	      + " {"
	  	      + " font-size:1.0em;"
	  	      + " text-align:left;"
	  	      + " padding-top:5px;"
	  	      + " padding-bottom:4px;"
	  	      + " background-color:#A7C942;"
	  	      + " color:#ffffff;"
	  	      + " }"
 
	  	      + " #componentWiseSummary" 
		      + " {"
		      + " font-family:\"Trebuchet MS\", Arial, Helvetica, sans-serif;"
		      + " width:100%;"
		      + " border-collapse:collapse;"
		      + " }"
		      + " #summary td, #summary th"
		      + " {"
		      + " font-size:0.8em;"
		      + " border:1px solid #98bf21;"
		      + " padding:3px 7px 2px 7px;"
		      + " }"
		      + " #summary th"
		      + " {"
		      + " font-size:1.0em;"
		      + " text-align:left;"
		      + " padding-top:5px;"
		      + " padding-bottom:4px;"
		      + " background-color:#A7C942;"
		      + " color:#ffffff;"
		      + " }"
 
			  + " #customers" 
		      + " {"
		      + " font-family:\"Trebuchet MS\", Arial, Helvetica, sans-serif;"
		      + " width:100%;"
		      + " border-collapse:collapse;"
		      + " }"
		      + " #customers td, #customers th"
		      + " {"
		      + " font-size:0.8em;"
		      + " border:1px solid #98bf21;"
		      + " padding:3px 7px 2px 7px;"
		      + " }"
		      + " #customers th"
		      + " {"
		      + " font-size:1.1em;"
		      + " text-align:left;"
		      + " padding-top:5px;"
		      + " padding-bottom:4px;"
		      + " background-color:#A7C942;"
		      + " color:#ffffff;"
		      + " }"
		      + " #customers tr.alt td"
		      + " {"
		      + " color:#000000;"
		      + " background-color:#EAF2D3;"
		      + " }"
	          + " </style>");
	    out.write("head");
 
	    out.write("body text-align:center");
 
	    out.write("table width=100% border=0 cellpadding=2 cellspacing=2");
	    out.write("tbody");
	    out.write("tr");
	    out.write("td");
	    out.write("table width=100% border=0 cellpadding=2 cellspacing=2");
	    out.write("tbody");
	    out.write("tr");
	    out.write("td align=center p class=title h1 自动化测试报告-By Kiven h1 p td tr");
	    out.write("tr" + "tbody" + "table" + "br");
 
	    /**
	     * Creating tables in HTML for Test Status
	     */    
	    out.write("table id=\"customers\"");
	    out.write("tr");
	    out.write("th Test Case Name</th>");
	    out.write("th Test Case ID</th>");
	    out.write("th Test Name and Steps</th>");
	    out.write("th Test Data th");
	    out.write("th Expected Result th");
	    out.write("th Actual Result th");
	    out.write("tr");
	    out.write("body");
	    out.write("html");
	    out.flush();
	    out.close();  
	}
 
	/*
	 * 将每一步执行的情况写入日志文件
	 */
	public void sendStatusToReport(String T_Name,String TC_ID, String Steps,String Data,String verify,String Result)throws Exception{
 
	    //先原文件末尾添加内容
	    FileWriter fstream = new FileWriter(filePath, true);
	    BufferedWriter out = new BufferedWriter(fstream);
 
	    //如果该行是测试用例标题行,则颜色设置为黄色,合并成一行并居中
	    if(Integer.parseInt(TC_ID)==0){
	    	out.write("tr bgcolor=#FFFF00 align='center'");
	    	out.write("td  colspan='6' b" + T_Name + "b td");
	    	out.write("tr");
                //刷新缓冲区
	        out.flush();
                //关闭流
	        out.close();
	    }else{
	    	//每行颜色设置成不同
		    //偶数行
		    if(Integer.parseInt(TC_ID)%2==0){
		    	//fail
		    	if(Result.equals("Fail")){
			    	out.write("tr bgcolor=#FF0000");//红色
			    }else{
			    	out.write("tr");
			    }
		    	//奇数行
		    }else{
		    	//fail
		    	if(Result.equals("Fail")){
			    	out.write("tr bgcolor=#FF0000");//red:bgcolor=#FF0000
			    }else{
			    	out.write("tr bgcolor=#EAF2D3");//灰绿色
			    }
		    }
	    	    out.write("td b" + T_Name + "b td");
		    out.write("td b" + TC_ID + "b td");
		    out.write("td b" + Steps + "b td");
		    out.write("td b" + Data + "b td");
		    out.write("td b" + verify + "b td");
		    out.write("td b" + Result + "b td");
		    out.write("tr");
		    out.flush();
		    out.close();
	    }
 
 
	}
 
	//测试函数
	public static void main(String args[]) throws Exception{
		HTMLLOG hl = new HTMLLOG();
		hl.generateReport();
		hl.sendStatusToReport("致友登录", "0", "操作步骤", "测试数据", "预期结果", "实际结果");
		hl.sendStatusToReport("", "1", "输入邮箱", "[email protected]", "输入成功", "Pass");
		hl.sendStatusToReport("", "2", "输入密码", "1", "输入成功", "Fail");
		hl.sendStatusToReport("", "3", "输入邮箱", "[email protected]", "输入成功", "Pass");
		hl.sendStatusToReport("", "4", "输入密码", "1", "输入成功", "Pass");
		hl.sendStatusToReport("", "5", "干什么", "1", "哦", "Pass");
	}
}

猜你喜欢

转载自865325772.iteye.com/blog/2051692