HTMLTestRunner是Python标准库unittest单元测试框架的一个扩展,可以生成易于使用的HTML测试报告,这个扩展很简单,只有一个HTMLTestRunner.py,下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html。

下载该文件,然后把它放到Python3的lib目录下,我的为:D:\Python35\Lib。

1.修改HTMLTestRunner

HTMLTestRunner.py是基于Python2开发的,如果是Python3环境,需要修改HTMLTestRunner.py文件。

 import StringIO修改为import io
self.outputBuffer = StringIO.StringIO()修改为self.outputBuffer = io.StringIO()
print >>sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime)修改为print(sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime))
if not rmap.has_key(cls):修改为if not cls in rmap:
uo = o.decode('latin-1')修改为uo = e
ue = e.decode('latin-1')修改为ue = e

在Python交互模式下引入HTMLTestRunner模块,没有报错,则说明添加成功:

 C:\Users>python3
Python 3.5. (v3.5.2:4def2a2901a5, Jun , ::) [MSC v. bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import HTMLTestRunner
>>>

2.生成HTML测试报告

 # coding:utf-
import unittest
from selenium import webdriver
import time
from HTMLTestRunner import HTMLTestRunner class TestBaidu(unittest.TestCase): def setUp(self):
self.driver = webdriver.Firefox()
self.driver.maximize_window()
self.driver.implicitly_wait()
self.base_url = "http://www.baidu.com" def tearDown(self):
self.driver.quit() def test_baidu(self):
driver = self.driver
driver.get(self.base_url)
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
time.sleep()
self.assertEqual(driver.title, "selenium_百度搜索") if __name__ == '__main__':
suite = unittest.TestSuite()
suite.addTest(TestBaidu("test_baidu"))
file = open("./resultReport.html", "wb")
runner = HTMLTestRunner(stream=file, title="百度搜索测试报告",description="用例执行情况:")
runner.run(suite)
file.close()

在当前目录打开resultReport.html:

 3.优化测试报告

HTMLTestRunner可以读取doc string类型的注释,因此,只需要在测试类或者测试方法下添加doc string类型的注释即可显示测试类和测试方法的注释。

 # coding:utf-
import unittest
from selenium import webdriver
import time
from HTMLTestRunner import HTMLTestRunner 8 class TestBaidu(unittest.TestCase):
9 """测试百度搜索"""

def setUp(self):
self.driver = webdriver.Firefox()
self.driver.maximize_window()
self.driver.implicitly_wait()
self.base_url = "http://www.baidu.com" def tearDown(self):
self.driver.quit() 19 def test_baidu(self):
20 """搜索关键词selenium"""

driver = self.driver
driver.get(self.base_url)
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
time.sleep()
self.assertEqual(driver.title, "selenium_百度搜索") if __name__ == '__main__':
suite = unittest.TestSuite()
suite.addTest(TestBaidu("test_baidu"))
file = open("./resultReport.html", "wb")
runner = HTMLTestRunner(stream=file, title="百度搜索测试报告",description="用例执行情况:")
runner.run(suite)
file.close()

运行脚本,然后在当前目录下打开resultReport.html文件:

4.修改测试报告名称

在测试之前,如果不修改测试报告文件名,则运行结束后,之前的测试报告会被覆盖,为了避免这种情况,我们可以在文件命中添加时间。

Python的time模块为我们提供了很多操作时间的方法:

 # coding:utf-
import time print(time.time()) # 返回当前时间(以秒为单位),自1970-- ::00以来的秒数 print(time.localtime()) # 将1970-- ::00以来的秒转换为本地时间的元组 print(time.ctime()) # 将1970-- ::00以来的以秒为单位的时间转换为本地时间的字符串 print(time.strftime(("%Y-%m-%d %H_%M_%S"))) # 根据设置的格式将时间元组转换为字符串
"""
%Y 带世纪部分的十进制年份,
%m 十进制表示的月份, [,].
%d 十进制表示每月的第几天 [,].
%H 24小时制十进制的小时 [,].
%M 十进制表示的分钟数 [,].
%S 十进制的秒数
%z 时区名称
%a 星期的简称 ,Sun
%A 星期的全称 ,Sunday
%b 月份的简称,Mar
%B 月份的全称,March
%I 12小时制的小时 [,].
%p 本地的AM或PM的等价显示
"""

修改测试脚本:

 if __name__ == '__main__':
suite = unittest.TestSuite()
suite.addTest(TestBaidu("test_baidu"))
4 now_time = time.strftime("%Y-%m-%d %H_%M_%S")
5 file_name = "./"+now_time+"result.html"
6 file = open(file_name, "wb")
runner = HTMLTestRunner(stream=file, title="百度搜索测试报告",description="用例执行情况:")
runner.run(suite)
file.close()

然后运行测试脚本,即可生成不同名称的测试报告。

4.输出项目集成测试报告

修改runnertest.py文件,使其可以生成项目集成测试报告。

 # coding:utf-
import unittest
from HTMLTestRunner import HTMLTestRunner
import time discover = unittest.defaultTestLoader.discover("./testpro/testcase/", "test*.py")
if __name__ == '__main__': 9 now_time = time.strftime("%Y-%m-%d %H-%M-%S")
10 file_name = "./testpro/testresult/"+now_time+"result.html"
11 file = open(file_name, "wb")
12 runner = HTMLTestRunner(stream=file, title="测试报告", description="测试用例执行情况")
runner.run(discover)

执行测试脚本,查看生成的测试报告:

生成HTML测试报告的更多相关文章

  1. Python用HTMLTestRunner生成html测试报告

    小编的主机:mac 一.引入HTMLTestRunner包 1.下载HTMLTestRunner.py,已上传到网盘,点击下载 2.将HTMLTestRunner.py复制到python安装目录的Li ...

  2. Testng生成的测试报告乱码解决办法

    Testng生成的测试报告乱码解决办法 2017-06-16 1 问题描述 乱码是程序编码不统一,比如Java源代码是utf-8,编译是gbk,这时会乱码. 代码如下: org.testng.Repo ...

  3. 转 生成 HTMLTestRunner 测试报告

    转自:http://www.cnblogs.com/hero-blog/p/4128575.html 04.生成 HTMLTestRunner  测试报告   1.HTMLTestRunner 是 P ...

  4. Python+Selenium----使用HTMLTestRunner.py生成自动化测试报告2(使用PyCharm )

    1.说明 在我前一篇文件(Python+Selenium----使用HTMLTestRunner.py生成自动化测试报告1(使用IDLE ))中简单的写明了,如何生产测试报告,但是使用IDLE很麻烦, ...

  5. Python+Selenium----使用HTMLTestRunner.py生成自动化测试报告1(使用IDLE)

    1.说明 自动化测试报告是一个很重要的测试数据,网上看了一下,使用HTMLTestRunner.py生成自动化测试报告使用的比较多,但是呢,小白刚刚入手,不太懂,看了很多博客,终于生成了一个测试报告, ...

  6. python+selenium +unittest生成HTML测试报告

    python+selenium+HTMLTestRunner+unittest生成HTML测试报告 首先要准备HTMLTestRunner文件,官网的HTMLTestRunner是python2语法写 ...

  7. Python3和HTMLTestRunner生成html测试报告

    1.测试环境: Python3.5+unittest+HTMLTestRunner 2.下载HTMLTestRunner.py文件 下载地址 http://tungwaiyip.info/softwa ...

  8. Python&Selenium&pytest借助allure生成自动化测试报告

    一.摘要 本篇博文将介绍Python和Selenium进行自动化测试时,如何借助allure生成自动化测试报告 二.环境配置 首先python环境中安装pytest和pytest_allure_ada ...

  9. Python&Selenium借助HTMLTestRunner生成自动化测试报告

    一.摘要 本篇博文介绍Python和Selenium进行自动化测试时,借助著名的HTMLTestRunner生成自动化测试报告 HTMLTestRunner.py百度很多,版本也很多,自行搜索下载放到 ...

随机推荐

  1. 20181101_将WCF寄宿到控制台

    使用管理员权限打开VS2017 2. 创建以下代码进行测试: a)         创建一个空白解决方案 b)         创建三个类库文件 c)         IMathService代码如下 ...

  2. 关于 Mybatis的原生连接池 和 DBCP 连接池

    一 遇到的问题:  项目用的play框架,数据库DB2, 持久化框架是Mybatis, 连接池用的是Mybatis原生的,遇到的问题是:有时候抛出如下异常: play.api.UnexpectedEx ...

  3. 基于LVS的负载均衡实现

    一 什么是负载均衡 负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器.FTP服务器.企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务 ...

  4. python web指纹获取加目录扫描加端口扫描加判断robots.txt

    前言: 总结上几次的信息收集构造出来的. 0x01: 首先今行web指纹识别,然后在进行robots是否存在.后面是目录扫描 然后到使用nmap命令扫描端口.(nmap模块在windows下使用会报停 ...

  5. Python Twisted系列教程8:使用Deferred的诗歌下载客户端

    作者:dave@http://krondo.com/deferred-poetry/  译者:杨晓伟(采用意译) 可以从这里从头开始阅读这个系列. 客户端4.0 我们已经对deferreds有些理解了 ...

  6. PCA主成分分析 ICA独立成分分析 LDA线性判别分析 SVD性质

    机器学习(8) -- 降维 核心思想:将数据沿方差最大方向投影,数据更易于区分 简而言之:PCA算法其表现形式是降维,同时也是一种特征融合算法. 对于正交属性空间(对2维空间即为直角坐标系)中的样本点 ...

  7. ACCESS中如何比较日期和时间,使用DateDiff函数

    DateDiff,语法如下:DateDiff( 间隔字符, 日期1, 日期2 [,firstdayofweek[, firstweekofyear]])一般使用 DateDiff( 间隔字符, 日期1 ...

  8. python实现文件下载的方法总结

    前端时间遇到一个通过url下载文件的需求,只需要简单的编写一个py脚本即可.从网上搜了下python实现文件下载的方法,总结如下,备查. 以下方法均已测试,环境win8.1  python2.6/2. ...

  9. 2-1 CPU多级缓存-缓存一致性.mkv

  10. 【bzoj1050】[HAOI2006]旅行comf

    1050: [HAOI2006]旅行comf Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2813  Solved: 1534[Submit][St ...