使用HTMLTestRunner生成报告
使用HTMLTestRunner生成报告
unittest本身并不具备这个功能,需要使用HTMLTestRunner库
使用步骤:
- 首先需要下载.py文件:http://tungwaiyip.info/software/HTMLTestRunner.html
- 下载后放入python安装目录的lib文件夹下面供全局项目使用,或者放在本项目下供本项目单独用。
- 打开终端进入python交互模式导入HTMLTestRunner ,如果无导入错误显示,则说明添加成功
import HTMLTestRunner
注意:python3的stringIO有变化,使用该HTMLTestRunner会报错ImportError: No module named 'StringIO'。这里使用python2.7试验。
1 help()查看类帮助信息
为了说明在报告中显示用例的注释,这里先了解下help()帮助函数。
help帮助信息息都是代码中通过 '''xxx ''' 或者 """xxx""" 注释符号来标注的。
如我们自定义一个模块helpin.py,并将其放入python目录的lib文件夹下面:
#coding=utf-8
u'''
这是help能够显示的帮助信息
'''
def add(a):
u"""这个函数用来输入a的值"""
print 'a'
在cmd命令行中,进入python27的交互模式,导入后通过help查看帮助信息:
>>> import helpin
>>> help(helpin)
Help on module helpin:
NAME
helpin - 这是help能够显示的帮助信息
FILE
e:\python27\lib\helpin.py
FUNCTIONS
add(a)
这个函数用来输入a的值
2 报告中显示用例的注释
给报告中的每个测试用例添加注释,来说明该测试用例是用来干什么的,非常有必要。
通过help()函数来查看HTMLTestRunner类的详细说明:
>>> import HTMLTestRunner
>>> help(HTMLTestRunner)
可以看到该类的注释说明,一个好的开源的框架应该有这样的规范。
这里在每个测试函数的下方添加上注释:
def test_equal(self):
u'''这里是测试a和b的两个值是否相等'''
a = 1
b = 2
self.assertEqual(a,b)
运行后,打开生成的html文件可以看到,每个测试用例函数的后面有该用例的注释。
如图:
注意:
testcase的注释放在一行,如果换行了就显示不了,解析成字符串:
def test_login_status(self):
"""测试有未填写项时,登陆按钮的状态"""
不能写成:
def test_login_status(self):
"""
测试有未填写项时,登陆按钮的状态
"""
3 动态生成需要多次执行的测试报告文件名称
如果一个测试套件需要多次执行,如果每次执行不去修改测试报告.html的文件名,则每次执行后会将之前的报告覆盖。如果想要保存每次执行的结果而不手动修改报告名称。这里可以使用动态生成文件名的方法。具体的生成可以根据需要来写动态生成的代码。
动态时间
python 时间函数:
- time.time() 获取当前时间戳。
- time.ctime() 当前时间的字符串形式。
- time.localtime() 当前时间的 struct_time 形式。
- time.strftime() 用来获得当前时间,可以将时间格式化为字符串。
修改之前的代码,将文件名字中添加上当前获取到的时间:
#获取当前时间
now = time.strftime("%Y-%m-%d-%H_%M_%S")
report_path = "report/%s_report.html" % now
生成的文件名称以2016-03-09-17_37_26_result.html格式出现。
if __name__ == "__main__":
# unittest.main()
login_test_suite = unittest.TestSuite()
login_test_suite.addTest(Login('test_login_status'))
login_test_suite.addTest(Login('test_login_success'))
login_test_suite.addTest(Login('test_login_failed'))
now = time.strftime("%Y-%m-%d-%H_%M_%S")
report_path = "report/%s_report.html" % now
fp = file(report_path, "wb")
runner = HTMLTestRunner.HTMLTestRunner(
stream=fp,
title=u"登陆页面报告",
description=u"测试结果"
)
runner.run(login_test_suite)
4 集成多个测试结果
目前测试报告只集成到了单个测试文件中,我们的最终目的是将其集成到一个文件中。
之前是通过testunit.addTests()函数逐个添加。
现在通过unittest.defaultTestLoader.discover()方法循环遍历添加测试用例。
最后通过runner.run()方法运行整个测试用例集。
问题
中文无法显示
assert text == "ç»å½è´¦å·æå¯ç é误2"
解决:
修改HTMLTestRunner.py里面错误输出进行转码:
773 行左右,latin-1修改为utf-8
uo = o.decode('utf-8')
使用HTMLTestRunner生成报告的更多相关文章
- HTMLTestRunner生成报告 中文展示乱码的问题
- 9-Unittest+HTMLTestRunner不能生成报告解决方法
1.问题现象 在使用HTMLTestRunner生成测试报告时,出现程序运行不报错,但不能生成报告的情况. 刚开始找了很久没发现问题,后来加上打印信息,发现根本没执行生成报告这部分代码.最后网上找到原 ...
- Selenium HTMLTestRunner 执行测试成功但无法生成报告
为什么用PyCharm或者Eclipse执行测试成功但无法生成HTMLTestRunner报告 最近遇到一些人问这样的问题: 他们的代码写的没问题,执行也成功了,但就是无法生成HTMLTestRunn ...
- 『心善渊』Selenium3.0基础 — 29、使用HTMLTestRunner生成unittest的HTML报告
目录 1.HTMLTestRunner介绍 2.HTMLTestRunner的使用 3.测试报告示例 4.封装成模块 1.HTMLTestRunner介绍 HTMLTestRunner是一个基于uni ...
- day11_单元测试_读取yaml文件中的用例,自动获取多个yaml文件内容执行生成报告
一.使用.yaml格式的文件直接可以存放字典类型数据,如下图,其中如果有-下一行有缩进代表这是个list,截图中是整体是一个list,其中有两部分,第二部分又包含另外一个list 二.单元测试:开发自 ...
- 执行用例,并生成报告——discover,HTMLRunner
HTMLRunner需要下载Python3的格式,懒人链接:http://pan.baidu.com/s/1tp3Ts 参考:http://bbs.chinaunix.net/thread-41547 ...
- Python3和HTMLTestRunner生成html测试报告
1.测试环境: Python3.5+unittest+HTMLTestRunner 2.下载HTMLTestRunner.py文件 下载地址 http://tungwaiyip.info/softwa ...
- Python&Selenium借助HTMLTestRunner生成自动化测试报告
一.摘要 本篇博文介绍Python和Selenium进行自动化测试时,借助著名的HTMLTestRunner生成自动化测试报告 HTMLTestRunner.py百度很多,版本也很多,自行搜索下载放到 ...
- Python&Selenium借助html-testRunner生成自动化测试报告
一.摘要 本博文将介绍Python和Selenium进行自动化测试时,借助html-testRunner 生成自动化测试报告 安装命令:pip install html-testRunner 二.测试 ...
随机推荐
- 痞子衡嵌入式:记录i.MXRT1060驱动LCD屏显示横向渐变色有亮点问题解决全过程(提问篇)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT1060上LCD横向渐变色显示出亮点问题的分析解决经验. 痞子衡前段时间在支持一个i.MXRT1060客户项目时遇到了LCD ...
- 【前端词典】这些功能其实不需要 JS,CSS 就能搞定
前言 今天我们大家介绍一些你可能乍一眼以为一定需要 JavaScript 才能完成的功能,其实 CSS 就能完成,甚至更加简单. 内容已经发布在 gitHub 了,欢迎围观 Star,更多文章都在 g ...
- Building Applications with Force.com and VisualForce(Dev401)(十):Designing Applications for Multiple Users: Building Business Processes that You Want
Dev401-011: Building Business Processes that You Want Course Objectives1.Describe the capabilities o ...
- python之面向对象的成员,方法,属性,异常处理
一.类的私有成员 1. 类中的私有成员是什么? 私有:只有满足一部分条件的才能使用 私有类的属性 私有对象的属性 私有方法 正常状态 class B: school_name = '老男孩教育' de ...
- 5分钟配置好你的AI开发环境
作者 | Revolver 无论是第一次设置TensorFlow的新手数据科学爱好者,还是使用TB级数据的经验丰富的AI工程师,安装库.软件包或者框架总是一个困难又繁琐的过程.但是像Docker这样的 ...
- centos7单机安装kafka
基础要求操作系统:CentOS 7x 64位 kafka版本:kafka_2.11-0.8.2.1 #安装使用的jdk以及kafka的包我放到百度云了,需要自取. # 链接:https://pan.b ...
- 16.如何查找所需的maven的依赖
http://mvnrepository.com/ 1.先打开上面的网址 搜索需要的依赖,点进去 2.选择需要的版本 3.红框中的就是依赖的地址 此外也有其他自动化构建工具所需要的地址
- Light of future-冲刺Day 5
目录 1.SCRUM部分: 每个成员进度 SCRUM 会议的照片 签入记录 代码运行截图 用户浏览界面 订单详情界面 管理员浏览界面 新增后台界面 2.PM 报告: 时间表 燃尽图 任务总量变化曲线 ...
- 搭建脚手架cli2.x环境
Vue脚手2.x架环境搭建 一.环境搭建 1.安装node 去官网下载node安装包 傻瓜式安装 万一安装后终端没有node环境,要进行node环境变量的配置 可以通过node提供的npm包管理器安装 ...
- 1051 Pop Sequence (25分)
Given a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, ..., N and p ...