package Utils;

 import java.io.File;
import java.util.Date; import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.log4j.Logger;
import org.testng.Reporter; public class ReportUtils { private static Logger logger = Logger.getLogger(ReportUtils.class.getName()); public ReportUtils() {
System.setProperty("org.uncommons.reportng.escape-output", "false");
} /*********************************************************************************************
* 写log和报告操作
*********************************************************************************************/
/**
* 写日志和报告
*
* @param comm
*/
public void log(String... comm) {
String time = DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss");
if (comm.length == 0) {
Reporter.log("[" + time + "] <br />");
logger.info("");
} else {
Reporter.log("[" + time + "] " + comm[0] + "<br />");
logger.info(comm[0]);
}
} /**
* 写日志和报告
*
* @param comm
* @comment 如果selenium.properties中【isPrintDebugMsg】值为0,则只打印looger,不打印report
*/
public void debug(String... comm) {
if (1 == 1) {
log("[debug]" + comm[0]);
} else {
logger.info(comm[0]);
}
} /**
* 写错误日志和报告
*
* @param comm
*/
public void error(String comm) {
String time = DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss");
Reporter.log("<span style=\"color:#FF0000\"><b>[" + time + "] [ERROR] " + comm + "</b></span><br />");
logger.error(comm);
} /**
* 写警告日志和报告
*
* @param comm
*/
public void warn(String comm) {
String time = DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss");
Reporter.log("<span style=\"color:#FF7F27\"><b>[" + time + "] [WARNING] " + comm + "</b></span><br />");
logger.warn(comm);
} /**
* 写重要的日志和报告
*
* @param comm
*/
public void highLight(String comm) {
log("<span style='background-color:#FFE500;'>" + comm + "</span>");
} /**
* 写绿色高亮的的日志和报告
*
* @param comm
*/
public void greenLight(String comm) {
log("<span style='background-color:#CFFFBA;'>" + comm + "</span>");
} /**
* 参数高亮
*
* @param comm
*/
public void paraLight(String comm) {
if (1 == 1) {
log("<span style='background-color:#E4FFD9;'>" + comm + "</span>");
} else {
logger.info(comm);
}
} /**
* 给MCDB用的日志和报告
*
* @param comm
*/
public void mcdbLight(String comm) {
if (1 == 1) {
log("<span style='background-color:#C1E7F7;'>[MCDB]" + comm + "</span>");
} else {
logger.info("[MCDB]" + comm);
}
} /**
* 写醒目的标题
*
* @param comm
*/
public void title(String comm) {
String str;
str = "<p style=\"color:#0068BD;margin-top:25px;margin-bottom:8px\"><b>";
str = str + "**********************************************************************************************<br>";
str = str + "* " + comm + "<br>";
str = str + "**********************************************************************************************</b>";
str = str + "</p>";
Reporter.log(str);
} /**
* 用于截图的log写入
*
* @param comm
* @param file
*/
public void screenShotLog(String comm, File file) {
int width = 350;
String absolute = "file:" + file.getAbsolutePath(); Reporter.log("<a target='_blank' href=\"" + absolute + "\">");
Reporter.log("<img width=\"" + width + "\" src=\"" + absolute + "\" /> " + comm);
Reporter.log("</a><br />");
}
}
 

自动化生成html报告的更多相关文章

  1. 利用Python半自动化生成Nessus报告

    0x01 前言 Nessus是一个功能强大而又易于使用的远程安全扫描器,Nessus对个人用户是免费的,只需要在官方网站上填邮箱,立马就能收到注册号了,对应商业用户是收费的.当然,个人用户是有16个I ...

  2. python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告(二)

    可以参考 python+requests接口自动化完整项目设计源码(一)https://www.cnblogs.com/111testing/p/9612671.html 原文地址https://ww ...

  3. python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告(已弃用)

    前言 1.环境准备: python3.6 requests xlrd openpyxl HTMLTestRunner_api 2.目前实现的功能: 封装requests请求方法 在excel填写接口请 ...

  4. [自动化]基于kolla-ansible部署的openstack自动化巡检生成xlsx报告

    自动化巡检介绍 此巡检项目在kolla-ansible部署的openstack环境上开发,利用ansible-playbook编排的功能,对巡检的任务进行编排和数据处理.主要巡检的对象有IaaS平台和 ...

  5. [自动化]基于kolla部署的openstack自动化巡检生成xlsx报告

    自动化巡检介绍 此巡检项目在kolla-ansible部署的openstack环境上开发,利用ansible-playbook编排的功能,对巡检的任务进行编排和数据处理.主要巡检的对象有IaaS平台和 ...

  6. python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告

    1.环境准备: python3.6 requests xlrd openpyxl HTMLTestRunner_api 2.目前实现的功能: 封装requests请求方法 在excel填写接口请求参数 ...

  7. unittest同时支持参数化和生成html报告

    最近在用python3.6+unittest+requests做自动化接口测试.发现一个问题,unittest中使用第3方插件parameterized进行参数化,再生成html报告时,运行就会失败. ...

  8. pytest文档13-allure2生成html报告(史上最详细)

    前言 allure是一个report框架,支持java的Junit/testng等框架,当然也可以支持python的pytest框架,也可以集成到Jenkins上展示高大上的报告界面. 环境准备 1. ...

  9. pytest十五:pytest-html 生成 html 报告

    pytest-HTML 是一个插件,pytest 用于生成测试结果的 HTML 报告.兼容 Python 2.7,3.6 pytest-html1.github 上源码地址[https://githu ...

随机推荐

  1. 20155333 2016-2017-2 《Java程序设计》第4周学习总结

    20155333 2016-2017-2 <Java程序设计>第4周学习总结 教材学习内容总结 继承基本上就是避免多个类间重复定义的共同行为,在Java中,子类只能继承一个父类. priv ...

  2. 【mysql优化】mysql count(*)、count(1)、count(主键字段)、count(非主键字段)哪个性能最佳

    测试结果为:count(*)和count(1)基本相等,count(非主键字段)最耗性能 -- 数据量 708254select count(*) from tmp_test1;-- avg 0.22 ...

  3. QQ在线交谈一句代码搞定

    现在有很多网页都有QQ在线咨询,还有什么QQ客服什么的,看着很高大上的一个功能,其实要实现很简单,只需要一句代码就搞定. 还是按以前的套路,先看效果图,再晒源代码 点击图标 再点击 就可以聊天了 再来 ...

  4. OpenGL ES学习笔记(二)——平滑着色、自适应宽高及三维图像生成

    首先申明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. <Android学习笔记--O ...

  5. MantisBT导出Excel文件名显示中文的修改方法

    我安装的是 mantisbt-2.15.0. 在“查看问题”页面导出Excel文件后,其文件名虽然是我选择的项目名称,但是,若项目名称中有中文,这就是用%加编码显示. 解决方法是: 在  <Ma ...

  6. Unity学习笔记(1)

    transform: transform是GameObject的一个默认的组件,其包含着该对象的几种属性,坐标(Position)以及旋转角度(Rotation)和尺寸(Scale). transfo ...

  7. NO.04--我的使用心得之使用vue绑定class名

    今天聊一聊这个话题,其实方式有很多种,我今天介绍几种我使用到的,各位看官耐心看: 一.用 变量形式 绑定单个 Class 名 在 vue 中绑定单个 class 名还好说,直接写就可以了 <te ...

  8. python程序设计——面向对象程序设计:继承

    继承是为代码复用和设计复用而设计的 在继承关系中,已有的.设计好的类称为父类或基类,新设计的类为子类或派生类 派生类可以继承父类的公有成员,但不能继承其私有成员 如果需要在派生类中调用基类的方法,可以 ...

  9. MATLAB 笔记

    MATLAB的学习 Matlab 主要有5大部分构成,分别是MATLAB语言,桌面工具与开发环境,数学函数库 ,图形系统和应用程序接口.以及众多的专业工具.

  10. [T-ARA][Lovey-Dovey]

    歌词来源:http://music.163.com/#/song?id=22704426 作曲 : 新沙洞老虎/崔圭成 [作曲 : 新沙洞老虎/崔圭成] [作曲 : 新沙洞老虎/崔圭成] 作词 : 新 ...