unittest 12 生成测试报告(将报告写入文本文件 生成Html格式的报告文件 TextTestRunner HTMLTestRunner)

用例执行完成后,执行结果默认是输出在屏幕上(不便于事后追踪和记录),其实我们可以把结果输出到一个文件中,形成测试报告。

unittest自带的测试报告是文本形式的,如下代码:

复制代码
import unittest

if __name__ == "__main__":
    # 测试用例目录
    test_dir = r"D:\Git\Test_Framework\test_case"
    # 加载测试用例
    discover = unittest.defaultTestLoader.discover(test_dir, 'test*.py')
    # 测试报告路径
    report_path = r"D:\Git\Test_Framework\report\report.text"
    with open(report_path,"a") as report:
        runner = unittest.TextTestRunner(stream=report,verbosity=2)
        runner.run(discover)
复制代码

生成的txt测试报告如下:

unittest 12 生成测试报告(将报告写入文本文件 生成Html格式的报告文件 TextTestRunner HTMLTestRunner)_第1张图片

这种TXT文件测试报告不能直观地展示用例执行情况,引入第三方模块HTMLTestRunner,可以展示一份优美的html格式的测试报告。

下面我们就来介绍下HTMLTestRunner模块

HTMLTestRunner模块不能通过pip安装,必须先下载下来下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html

unittest 12 生成测试报告(将报告写入文本文件 生成Html格式的报告文件 TextTestRunner HTMLTestRunner)_第2张图片

直接右键另存为就行了,下载完成后放到python安装目录下的../Python36\Lib

因为HTMLTestRunner模块是基于Python2开发的,目前停止更新了,在Python3上运行会报错。为了使其支持Python3环境,需要对其中的部分内容进行修改:

第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, ‘\nTimeElapsed: %s‘ % (self.stopTime-self.startTime))

第642行,将if not rmap.has_key(cls):修改成if notcls in rmap:

第766行,将uo = o.decode(‘latin-1‘)修改成uo = e

第775行,将ue = e.decode(‘latin-1‘)修改成ue = e

修改完成后保存。

现在我们就可以生成一份优美的测试报告了

代码:

复制代码
import unittest
from HTMLTestRunner import HTMLTestRunner

if __name__ == "__main__":
    # 测试用例目录
    test_dir = r"D:\Git\Test_Framework\test_case"
    # 加载测试用例
    discover = unittest.defaultTestLoader.discover(test_dir, 'test*.py')
    # 测试报告路径
    report_path = r"D:\Git\Test_Framework\report\report.html"
    with open(report_path,"wb") as report:
        runner = HTMLTestRunner(stream = report,
                                title = "测试报告",
                                description = "系统登录测试用例执行")
        runner.run(discover)
复制代码

unittest 12 生成测试报告(将报告写入文本文件 生成Html格式的报告文件 TextTestRunner HTMLTestRunner)_第3张图片

 

补充:

还有一个三方库,名字为 BeautifulReport

Python unittest 之 BeautifulReport可视化报告

你可能感兴趣的:(unittest 12 生成测试报告(将报告写入文本文件 生成Html格式的报告文件 TextTestRunner HTMLTestRunner))