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. IDA Pro 权威指南学习笔记(四) - IDA 用户界面的基本规则

    基本规则: IDA 不提供撤销功能 如果由于不小心按下某个键,导致数据库文件发生意外,这时需要将显示窗口恢复到以前的状态 几乎所有的操作都有其对应的菜单项.热键和工具栏按钮 IDA 的工具栏高度可配置 ...

  2. in not in 和 null , in 判断范围中可以包含null,而not in判断不能包括null

    oracle中,任何字符串与null比较得到的结果都是null,而 oracle的判断条件为null时就退出判断(?) 因此判断某个字符串是否在一个集合中时,not in 和 in的结果完全不一样,如 ...

  3. seureCRT快捷键

    前言    secureCRT 是一个非常不错的终端软件,在嵌入式开发过程中经常使用到,所以了解一下其快捷键操作是非常有必要的,可以提高开发效率. 复制:[ctrl] + [shift] + c 粘贴 ...

  4. leetcode821

    vector<int> shortestToChar(string S, char C) { vector<int> V; ; int AYC[N]; ; ; i < S ...

  5. android 标签页<include /> 的使用

    在android页面布局设计中,有时候需要用到很多相同的布局设计.如果每个用到该布局的xml里都写那个相同布局的话,会造成语句冗余,而且可读性很差. 为了解决这个问题的话,我们可以把相同布局的代码单独 ...

  6. 1.forEach():遍历数组,并为每个元素调用传入的函数; 举例:

    var a = [1,2,3]; var sum = 0; //传一个参数 a.forEach(function(v){ sum += v; }); console.log(sum);//6 //传三 ...

  7. 一个简单的AXIS远程调用Web Service示例

    我们通常都将编写好的Web Service发布在Tomcat或者其他应用服务器上,然后通过浏览器调用该Web Service,返回规范的XML文件.但是如果我们不通过浏览器调用,而是通过客户端程序调用 ...

  8. JS中日期处理

  9. 数论Keynote

    [同余] 1.整数a,b对模m同余的充分与必要条件是m|(a-b),即a=b+mt,t是整数. 2.性质丁.若a1=b1(mod m),a2=b2(mod m),则(a1+a2)=(b1+b2)(mo ...

  10. 当集合里存储的是URL时的一些问题总结

    先看道题吧: package com.lk.C; import java.net.MalformedURLException; import java.net.URL; import java.uti ...