Python3和HTMLTestRunner生成html测试报告

时间:2023-03-09 03:59:36
Python3和HTMLTestRunner生成html测试报告

1、测试环境:

  Python3.5+unittest+HTMLTestRunner

2、下载HTMLTestRunner.py文件

  下载地址 http://tungwaiyip.info/software/HTMLTestRunner.html
  右键单击保存至本地,放在Python的安装目录Lib文件夹下(我本地放在本目录下:D:\setup\Python35\Lib)

3、由于下载的HTMLTestRunner.py文件是基于Python2的,若适用于Python3则进行如下修改:

  第94行,将import StringIO修改成import io
  第539行,将self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer = io.StringIO()
  第642行,将if not rmap.has_key(cls):修改成if not cls in rmap:
  第766行,将uo = o.decode('latin-1')修改成uo = e
  第772行,将ue = e.decode('latin-1')修改成ue = e
  第631行,将print >> sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime)修改成print(sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime))

4、以下3个py文件利用unittest、HTMLTestRunner生成html测试报告

test.py 文件

 class Test():
#初始化函数
def __init__(self,a,b):
self.a = a
self.b = b #两个数相加
def add(self):
x = self.a+self.b
return x #两个数相减
def dele(self):
y = self.a-self.b
return y

add_dele.py文件

 #coding=utf-8
from test import Test
import unittest class Test_test(unittest.TestCase):
#下面三引号对类的注释会显示在报告的表格中
'''数字计算'''
def test_shuzi(self):
#下面三引号对方法的注释会显示在报告的表格中
'''两个数字相加以及两个数字相减'''
# 对test文件中的Test类初始化
shuzi = Test(7, 3)
self.assertEqual(shuzi.add(),10)
self.assertEqual(shuzi.dele(),4)
def test_liangmethod(self):
'''两数字相加的2倍 加上 两个数字相减的2倍'''
#对test文件中的Test类初始化
liangshuzi = Test(6,5)
t = liangshuzi.add()*2 + liangshuzi.dele()*2
self.assertEqual(t,24)

test_add_dele.py文件

 #coding=utf-8
from HTMLTestRunner import HTMLTestRunner
import unittest
import add_dele
import time
import os #构建测试集
suit = unittest.TestSuite()
#测试集加入add_dele文件中被调用的方法。格式suit.addTest(文件名.类名("方法名"))
suit.addTest(add_dele.Test_test("test_shuzi"))
suit.addTest(add_dele.Test_test("test_liangmethod")) #定义存放测试报告的路径及文件名
#我定义的路径是:当前路径+存放报告的专有目录Report+文件名(文件名是当前时间+report.html)
curent_dirc=os.path.dirname(os.path.realpath(__file__))
report_dirc = "\Report"
now = time.strftime("%Y%m%d-%H%M%S")
report_name = curent_dirc+report_dirc+"\\"+now+"report.html"
fp = open(report_name,"wb")
runner = HTMLTestRunner(stream=fp,
title="测试一下报告生成",
description="用两个数字的相加减来练习")
runner.run(suit)
fp.close()

5、文件及html报告架构:

Python3和HTMLTestRunner生成html测试报告

6、生成的html报告样式:

Python3和HTMLTestRunner生成html测试报告