文章目录
一、HTMLTestRunnner简介
自动化测试执行完成后,可以将测试结果保存在测试报告里。使用HTMLTestRunner模块可以直接生成HTML格式的报告。
HTMLTestRunner是一个第三方的模块,通过pip工具安装不了,只能下载后手动导入。
二、HTMLTestRunner下载
HTMLTestRunner下载地址: http://tungwaiyip.info/software/HTMLTestRunner.html

三、HTMLTestRunner修改
因为这个模块原本给python2.0用的,我用的python是3.x,所以下载后需要做些修改。
下载后修改:(Ctrl+G可以跳转到指定行)
- 94行引入的名称要改,从 import StringIO 改成import io。
- 539行 self.outputBuffer = StringIO.StringIO() 要改成self.outputBuffer=io.StringIO()
- 631行 print >>sys.stderr, ‘\nTime Elapsed: %s’ % (self.stopTime-self.startTime)
修改为:print (sys.stderr, ‘\nTime Elapsed: %s’ %(self.stopTime-self.startTime)) - 642行,if not rmap.has_key(cls): 需要换成 if not cls in rmap:
- 766行的uo = o.decode(‘latin-1’),改成 uo=o
- 772行,把 ue = e.decode(‘latin-1’) 直接改成 ue = e
四、HTMLTestRunner存放路径
修改好的模块存放在…\python\Lib下

五、生成测试用例报告的一个实例及具体步骤
1. 实现加减运算脚本
class Math:
def __init__(self,a,b):
self.a=a
self.b=b
def add(self):
return self.a+self.b
def minus(self):
return self.a-self.b
2. 测试用例脚本
setupteardown.py实现测试用例的环境准备和还原。testadd.py和testminus.py用来写要执行的测试用例,这两个文件中的类都需要继承setupteardown中的类,这样就能继承环境的准备和还原。
setupteardown.py
import unittest # 导入测试框架
from case.calculate import Math # 导入需要测试的模块
class SetupTeardwon(unittest.TestCase): #继承类,写测试用例
def setUp(self): # 测试前环境准备
print("用例执行前环境准备")
def tearDown(self): #测试后环境还原
print("用例执行后环境还原")
import unittest # 导入测试框架
from case.calculate import Math
from case.setupteardown import SetupTeardwon # 导入需要测试的模块
class TestMath(SetupTeardwon): #继承类,写测试用例
def test_add1(self): # 测试方法,必须以test开头
u"""测试加法用例,数字为3,2"""
math1=Math(3,2)
self.assertEqual(math1.add(),5)
def test_add2(self): # 测试方法,必须以test开头
u"""测试加法用例,数字为1,1"""
math1=Math(1,1)
self.assertEqual(math1.add(),3)
import unittest # 导入测试框架
from case.calculate import Math
from case.setupteardown import SetupTeardwon # 导入需要测试的模块
class TestMath(SetupTeardwon): #继承类,写测试用例
def test_minus(self): # 测试方法,必须以test开头
# 添加注释,可以生成带中文描述的测试用例
u"""测试减法用例,数字为3,2"""
math1=Math(3,2)
self.assertEqual(math1.add(),5)
def test_minus2(self): # 测试方法,必须以test开头
u"""测试减法用例,数字为1,1"""
math1=Math(1,1)
self.assertEqual(math1.add(),3)
3. 测试用例的执行
import unittest
from HTMLTestRunner import HTMLTestRunner
import time
if __name__ == '__main__':
#指定批量执行的模块
test_module = './'
discover = unittest.defaultTestLoader.discover(test_module, pattern="test*.py")
#报告存放的文件夹
dir_path='./'
#报告命名加上时间格式化
now=time.strftime('%Y-%m-%d %H_%M_%S')
#报告绝对路径
report_path=dir_path +now +' result.html'
#打开文件,写入测试结果
with open(report_path,'wb') as f:
runner=HTMLTestRunner(stream=f,verbosity=2,title='Math测试报告',description='用例执行详细信息')
runner.run(discover)
f.close()
4. 生成测试报告

生成的测试报告如下:

可以点击展开查看详细信息:

本文介绍了如何使用HTMLTestRunner在unittest框架下生成HTML格式的测试报告,包括HTMLTestRunner的简介、下载、修改、存放路径,以及生成测试报告的具体步骤和实例。
3188





