unittest框架-生成html格式的测试报告(HTMLTestRunner)

文章目录

      • 一、HTMLTestRunnner简介
      • 二、HTMLTestRunner下载
      • 三、HTMLTestRunner修改
      • 四、HTMLTestRunner存放路径
      • 五、生成测试用例报告的一个实例及具体步骤
        • 1. 实现加减运算脚本
        • 2. 测试用例脚本
        • 3. 测试用例的执行
        • 4. 生成测试报告

一、HTMLTestRunnner简介

自动化测试执行完成后,可以将测试结果保存在测试报告里。使用HTMLTestRunner模块可以直接生成HTML格式的报告。
HTMLTestRunner是一个第三方的模块,通过pip工具安装不了,只能下载后手动导入。

二、HTMLTestRunner下载

HTMLTestRunner下载地址: http://tungwaiyip.info/software/HTMLTestRunner.html
unittest框架-生成html格式的测试报告(HTMLTestRunner)_第1张图片

三、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下
unittest框架-生成html格式的测试报告(HTMLTestRunner)_第2张图片

五、生成测试用例报告的一个实例及具体步骤

1. 实现加减运算脚本

calculate.py

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("用例执行后环境还原")

testadd.py

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)

testminus.py

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. 测试用例的执行

runtest.py

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. 生成测试报告

unittest框架-生成html格式的测试报告(HTMLTestRunner)_第3张图片
生成的测试报告如下:
unittest框架-生成html格式的测试报告(HTMLTestRunner)_第4张图片
可以点击展开查看详细信息:
unittest框架-生成html格式的测试报告(HTMLTestRunner)_第5张图片

你可能感兴趣的:(单元测试框架unittest)