python:unittest自动生成测试报告
2019-03-03 本文已影响0人
rr1990
一、使用unittest自带的测试报告
使用unittest执行完测试用例后,默认的测试结果是输出在屏幕上,并未将测试结果输出到文件中,这样容易造成报告无保存记录;
unittest自动的TextTestRunner可以报告以文本形式输出到文件中,只需将参数stream赋值即可;
import unittest
if __name__ == "__main__":
# 测试用例保存的目录
case_dirs = r"E:\PycharmProjects\pythonStudy\ModuleStudy\unittest_module\testCases"
# 加载测试用例
discover = unittest.defaultTestLoader.discover(case_dirs, "test_*.py")
# 运行测试用例同时保存测试报告
test_report_path = r"E:\PycharmProjects\pythonStudy\ModuleStudy\unittest_module\testCases\report.txt"
with open(test_report_path, "a") as report_file:
runner = unittest.TextTestRunner(stream=report_file, verbosity=2)
runner.run(discover)
"""文本中显示的测试结果如下:
test_case1 (test_case1.TestCase1) ... ok
test_case2 (test_case2.TestCase1) ... ok
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK
"""
txt文件显示的测试报告不直观,使其他人查看起来繁琐复杂,故一般使用第三方HTMLTestRunner模块来保存测试报告
二、HTMLTestRunner模块介绍
- 导入HTMLTestRunner模块
不能通过pip安装的方式导入,需要网上下载HTMLTestRunner.py,下载后将其放至python安装目录下的Lib下即可直接使用;
但网上“http://tungwaiyip.info/software/HTMLTestRunner.html”不兼容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 HTMLTestRunner:导入HTMLTestRunner
- HTMLTestRunner.HTMLTestRunner(stream=sys.stdout, verbosity=1, title=None, description=None)
stream:输出报告的地址;
verbosity:报告内容的详细程度,2表示很详细;
title:报告的标题;
description:报告的详细描述;
import unittest
import HTMLTestRunner
if __name__ == "__main__":
# 测试用例保存的目录
case_dirs = r"E:\PycharmProjects\pythonStudy\ModuleStudy\unittest_module\testCases"
# 加载测试用例
discover = unittest.defaultTestLoader.discover(case_dirs, "test_*.py")
# 运行测试用例同时保存测试报告
test_report_path = r"E:\PycharmProjects\pythonStudy\ModuleStudy\unittest_module\testCases\report.html"
with open(test_report_path, "wb") as report_file:
runner = HTMLTestRunner.HTMLTestRunner(stream=report_file, title="自动化测试报告", description="XX应用功能测试")
runner.run(discover)