testng生成报告ReportNG美化测试报告-程序员宅基地

技术标签: python  测试  

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

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

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

 

 

 

这样生成的报告就不会乱码了。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33858249/article/details/86241966

智能推荐

实现Ant Design Tree组件的节点的增删改_基于 ant design vue实现tree的增删改-程序员宅基地

文章浏览阅读6k次,点赞4次,收藏33次。实现Ant Design Tree组件的节点的增删改在做项目时最近遇到一个需求,需要用到Antd中的tree,并能够实现对tree的节点的增加和删除,以及节点名称的修改。去翻Antd官网文档,发现tree组件并没有提供关于节点操作的api,但是有鼠标右击的api。借助这个鼠标右击,以及其他组件是可以实现对节点的增删改。下面进行截图介绍:截图介绍第一部分:Tree组件最外层节点只能增加子节点父节点可以增加子节点,修改自己的节点名称,删除节点3.最内层节点不允许再添加子节点,只允许修改自己的_基于 ant design vue实现tree的增删改

vue基于elementui实现的带搜索功能的懒加载树_element ui树结构懒加载如何搜索-程序员宅基地

文章浏览阅读4.1k次,点赞4次,收藏20次。基于elementui实现的带搜索功能的懒加载树1. 思路elementui的el-tree本身可以实现懒加载功能,但是却不能进行远程搜索,思路就是使用两颗树,一颗用来懒加载,另一颗用来全部加载。2.实现方式1.创建一个自定义组件j-tree2.画页面:一个el-input,两个el-tree<template> <div class="treebox"> <h2>{{title}}</h2> <el-_element ui树结构懒加载如何搜索

innovus停止当前命令_Innovus 小技巧 | Innovus 中如何验证低功耗设计-程序员宅基地

文章浏览阅读1.4k次。此处论及的低功耗设计是指带IEEE1801 或CPF 的设计,即有多个电压域的设计,对于这样的设计,power mesh 跟placement 做完后,通常需要检查:placement 是否遵照了power intent 的需求,把对应的cell 摆放在了对应的电压域中;如何report 某个instance 或某个 power domain 的低功耗信息;如何对Power Grid 进行chec..._low power innovus

Linux数据恢复-程序员宅基地

文章浏览阅读543次,点赞11次,收藏11次。严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于 Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。Ext3/Ext4 是日志式文件系统,他们是前者的扩展,保持了对于前者的兼容性,并且带来了较高的安全特性。与Ext2不同的是,Ext3/Ext4文件系统下,当文件删 除后,系统会清除文件相应的i-节点,这样做的优点在于通过unclean载入文件系统后,重放日志时,可以减少对文件系统的访问次数,但这同样增加了数 据恢复难度。

我的世界java转模组基岩,《我的世界》无模组激光门!瞬间就能粉碎基岩,凋灵也要被秒杀?...-程序员宅基地

文章浏览阅读239次。大家看科幻片的时候有没有见过激光门呢?激光门是一种杀伤力极强的高科技设备,所有碰到激光的生物都会被一瞬间粉碎!那么,如何在《我的世界》里打造这么厉害的激光门呢?其实,很简单!首先准备好自己的房子,搭两面墙,中间距离三格以上远,从入口处某一行方块向下挖两格深。在坑底铺满动力铁轨,旁边某个方块替换成红石块或者红石火把充能。铁轨上再放一个矿车,并且下去推动它,使它在铁轨上来回运行。将矿车上面一层用与地面..._java模组转基岩版

超详细 React Native 完全使用指南,学不会你打我-程序员宅基地

文章浏览阅读1w次。今天给大家分享一下我是如何快速通关打怪搭建 React Native 跨端开发环境,并使用大家非常熟悉的开发工具 VSCode 来编写丝滑般的代码。编写丝滑般代码会再下一篇输出,包括项目实战经验总结和踩坑,如目录架构、函数式编程、React Hook 灵活运用、常见场景、开发调试、发布部署、踩坑、性能优化等等。之前因为在我的技术群,收到群友@我,问能否出一个保姆级 React Native 搭建开发环境的教程,我说照着官方文档步骤操作即可。_react native

随便推点

python:functools --- 高阶函数和可调用对象上的操作_functools模块在python3.8中还能用吗?-程序员宅基地

文章浏览阅读170次。python:functools --- 高阶函数和可调用对象上的操作_functools模块在python3.8中还能用吗?

第一章:R-CNN网络详解(丰富特征层次用于准确的目标检测和语义分割技术报告(v5))-程序员宅基地

文章浏览阅读982次。特征很重要。过去十年在各种视觉识别任务上取得的进展主要基于SIFT [29]和HOG [7]的使用。但是如果我们看一下在经典的视觉识别任务PASCAL VOC目标检测 [15]上的表现,普遍认为在2010年至2012年期间进展缓慢,只通过构建集成系统和使用成功方法的轻微变体获得了小幅增益。SIFT和HOG是基于块状方向直方图的表示方法,我们可以将其粗略地与灵长类动物视觉通路中的V1区的复杂细胞相关联。但我们也知道,识别发生在下游的几个阶段,这表明可能存在用于计算更具信息的视觉识别特征的分层多阶段过程。_r-cnn

Linux定时任务备份MySql和清理MySql日志_mysql 脚本日志清除-程序员宅基地

文章浏览阅读236次。【代码】Linux定时任务备份MySql和清理MySql日志。_mysql 脚本日志清除

SpringBoot 使用JDBC_springboot jdbc-程序员宅基地

文章浏览阅读5.8k次。由于SpringBoot将JDBC的操作封装了起来成为JDBCTemplate,使得我们即使直接使用JDBC对数据库进行操作也没有以前那么麻烦了。不过既然有更好用的MyBatis,还是要用更好的。先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。https。..._springboot jdbc

利用Swiss-model API进行蛋白序列提交及蛋白结构建模_swiss-model下载-程序员宅基地

文章浏览阅读1.3k次,点赞3次,收藏5次。利用Swiss-model API提交序列进行建模_swiss-model下载

笛卡尔心形函数表达式_如何用几何画板画笛卡尔心形函数-程序员宅基地

文章浏览阅读2.8k次。七夕节是个浪漫的节日,利用几何画板这个强大的绘图软件也可以对心爱的人表示!笛卡尔心形线像极了人的一颗心,用来表达爱意再好不过了。本文我们来介绍具体步骤如下:1.新建参数。右键绘图区空白处,“新建参数”,标签为 a,数值为 4,单位“无”。 新建标签为a数值为4的参数2.快捷键“Ctrl+G”,调出绘制新函数编辑器。点“方程”,选极坐标方程。在编辑器中 点入如图函数。“确定”,得到心形图象。 在极坐..._笛卡尔心形曲线函数表达式