Selenium2+python自动化54-unittest生成测试报告(HTMLTestRunner)
前言
批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,可以生成HTML格式的。
unittest里面方法是不能生成html格式报告的,需要导入一个第三方的模块:HTMLTestRunner
一、导入HTMLTestRunner
1.这个模块下载不能通过pip安装了,只能下载后手动导入,下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html
2.Download下HTMLTestRunner.py文件就是我们需要下载的包。
3.下载后手动拖到python安装文件的Lib目录下
二、demo解析
1.下载Download下的第二个文件test_HTMLTestRunner.py,这个就是官方给的一个测试demo了,从这个文件可以找到该模块的用法。
2.找到下图这段,就是官方给的一个demo了,test_main()里上半部分就是加载测试case,我们不需要搞这么复杂。
参考前面一篇内容就行了Selenium2+python自动化53-unittest批量执行(discover)
3.最核心的代码是下面的红色区域,这个就是本篇的重点啦。
三、生成html报告
1.我们只需把上面红色区域代码copy到上一篇的基础上稍做修改就可以了,这里主要有三个参数:
--stream:测试报告写入文件的存储区域
--title:测试报告的主题
--description:测试报告的描述
2.report_path是存放测试报告的地址
四、测试报告详情
1.找到测试报告文件,用浏览器打开,点开View里的Detail可以查看详情描述。
2.为了生成带中文描述的测试用例,可以在case中添加注释,如在test_01的脚本添加如下注释:
class Test(unittest.TestCase):
def setUp(self):
print "start!"
def tearDown(self):
time.sleep(1)
print "end!"
def test01(self):
u'''测试登录用例,账号:xx 密码xx'''
print "执行测试用例01"
def test03(self):
u'''测试登搜索用例,关键词:xxx'''
print "执行测试用例03"
3.重新运行后查看测试报告
五、参考代码:
# coding:utf-8
import unittest
import HTMLTestRunner
def all_case():
# 待执行用例的目录
case_dir = "D:\test\yoyotest\case"
testcase = unittest.TestSuite()
discover = unittest.defaultTestLoader.discover(case_dir,
pattern="test*.py",
top_level_dir=None)
# discover方法筛选出来的用例,循环添加到测试套件中
for test_suite in discover:
for test_case in test_suite:
# 添加用例到testcase
testcase.addTests(test_case)
print testcase
return testcase
if __name__ == "__main__":
# 返回实例
# runner = unittest.TextTestRunner()
report_path = "D:\test\yoyotest\report\result.html"
fp = open(report_path, "wb")
runner = HTMLTestRunner.HTMLTestRunner(stream=fp,
title=u'这是我的自动化测试报告',
description=u'用例执行情况:')
# run所有用例 交流QQ群:232607095
runner.run(all_case())
fp.close()
学习过程中有遇到疑问的,可以加selenium(python+java) QQ群交流:232607095
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python 进阶(六): Excel 基本操作
- 基于Rust-vmm实现Kubernetes运行时
- 云开发如何为腾讯游戏年度发布会保驾护航?
- 跨端方案的三大困境
- Python 进阶(七): Word 基本操作
- Python 进阶(八):XML 基本操作
- Python 进阶(九):JSON 基本操作
- Kafka集群监控系统Kafka Eagle部署与体验
- MySQL information_schema详解 GLOBAL_VARIABLES和SESSION_VARIABLES
- 我爬取了知乎上大学相关话题中的热门高赞问答,其中是否有你大学生活的影子呢?
- MySQL information_schema详解 KEY_COLUMN_USAGE
- Python 实现黑客帝国代码雨效果
- MySQL information_schema详解 ndb_transid_mysql_connection_map
- MySQL information_schema详解 OPTIMIZER_TRACE
- 用 Python 画一个奸笑(滑稽)表情