testng生成报告ReportNG美化测试报告

发表于:2017-8-10 15:04

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:陈建忠    来源:博客

  
  ReportNG 是一个配合TestNG运行case后自动帮你在test-output文件内生成一个相对较为美观的测试报告!
  ReportNG 里面Log 是不支持中文的,我改过ReportNG.jar源码,具体方法看最下面,也可以找我直接要jar!
  话不多说直接上
  环境准备:
  1、你需要这些架包
  解释:有人会问现在ReportNG版本不是1.1.4吗?为什么我这里是1.1.5呢,这里是因为我改过这里面的源码,(为什么要改源码?后面告诉你)
  修复ReportNG中文乱码问题包下载地址:地址
  2、先写一个简单的case,比如打开百度,下面这个代码看上去不难吧!这是第二步前提是你能运行它
  package Test;
  import org.junit.After;
  import org.openqa.selenium.By;
  import org.openqa.selenium.WebDriver;
  import org.openqa.selenium.firefox.FirefoxDriver;
  import org.openqa.selenium.firefox.FirefoxProfile;
  import org.testng.annotations.Test;
  public class case1 {
  WebDriver driver;
  @Test
  public void Open() throws InterruptedException {
  System.setProperty("webdriver.friefox.bin","C:\\Program Files\\Mozilla Firefox\\friefox.exe");
  FirefoxProfile fp = new FirefoxProfile();
  WebDriver driver = new FirefoxDriver(fp);
  driver.get("http://www.baidu.com");
  driver.findElement(By.id("kw")).sendKeys("testerhome");
  }
  @Test
  public void Open() throws InterruptedException {
  System.setProperty("webdriver.friefox.bin","C:\\Program Files\\Mozilla Firefox\\friefox.exe");
  FirefoxProfile fp = new FirefoxProfile();
  WebDriver driver = new FirefoxDriver(fp);
  driver.get("http://www.baidu.com");
  driver.findElement(By.id("kw")).sendKeys("testerhome");
  Reporter.log("测试1通过");
  }
  @Test
  public void Open1() throws InterruptedException {
  System.setProperty("webdriver.friefox.bin","C:\\Program Files\\Mozilla Firefox\\friefox.exe");
  FirefoxProfile fp = new FirefoxProfile();
  WebDriver driver = new FirefoxDriver(fp);
  driver.get("http://www.baidu.com");
  driver.findElement(By.id("kw")).sendKeys("testerhome");
  Reporter.log("测试2通过");
  }
  @Test
  public void Open2() throws InterruptedException {
  System.setProperty("webdriver.friefox.bin","C:\\Program Files\\Mozilla Firefox\\friefox.exe");
  FirefoxProfile fp = new FirefoxProfile();
  WebDriver driver = new FirefoxDriver(fp);
  driver.get("http://www.baidu.com");
  driver.findElement(By.id("k1w")).sendKeys("testerhome");
  Reporter.log("测试3通过");
  }
  @After
  public void quit() throws InterruptedException {
  driver.quit();
  }
  }
  3、配置testNG.xml,这个文件是testNG的配置文件,
  <?xml version="1.0" encoding="UTF-8"?>
  <suite name="test" parallel="true">
  <test name="test" preserver-order="true">
  <classes>
  //你也可以多个
  <class name="包名.case名字"/>
  <class name="包名.case名字"/>
  <class name="包名.case名字"/>
  </classes>
  <listeners>
  //这是你需要加的东西
  <listener class-name="org.uncommons.reportng.HTMLReporter" />
  <listener class-name="org.uncommons.reportng.JUnitXMLReporter" />
  </listeners>
  </test> <!-- Test -->
  </suite> <!-- Suite -->
  4、然后运行testNG.XML ,再看test-output文件夹 里面的 html文件下面的index.html
  报错信息:
  你自己System.out的东西都可以写到这里:
  
  如果你的报告是乱码,那么你不要急,方法在下面:
  在使用ReportNG替换TestNG自带报告时如果报告中含中文,则会乱码,很是不爽,所以把ReportNG的源码下载下来调试。
  原来以为是velocity模板的问题,结果对比发现模板没有任何问题,再通过跟踪生成报告过程的代码发现是在将模板文件替换后输出到页面时未转码导致的,修改方法如下:
  修改AbstractReporter中的generateFile这个方法中的代码如下:
  原来的代码是这样的:
  protected void generateFile(File file,  String templateName,  VelocityContext context) throws Exception{
  Writer writer = new BufferedWriter(new FileWriter(file));
  try
  {
  Velocity.mergeTemplate(classpathPrefix + templateName,
  ENCODING,
  context,
  writer);
  writer.flush();
  }
  finally
  {
  writer.close();
  }
  }
  修改成下面这样,然后编译好新的jar文件
  protected void generateFile(File file,  String templateName,  VelocityContext context) throws Exception{
  //Writer writer = new BufferedWriter(new FileWriter(file));
  //encoding to utf-8
  OutputStream out=new FileOutputStream(file);
  Writer writer = new BufferedWriter(new OutputStreamWriter(out,"utf-8"));
  try
  {
  Velocity.mergeTemplate(classpathPrefix + templateName,ENCODING,context,writer);
  writer.flush();
  }
  finally
  {
  writer.close();
  }
  }
  这样生成的报告就不会乱码了。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号