用例执行完成后,执行结果默认是输出在屏幕上(不便于事后追踪和记录),其实我们可以把结果输出到一个文件中,形成测试报告。
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测试报告如下:
这种TXT文件测试报告不能直观地展示用例执行情况,引入第三方模块HTMLTestRunner,可以展示一份优美的html格式的测试报告。
下面我们就来介绍下HTMLTestRunner模块
HTMLTestRunner模块不能通过pip安装,必须先下载下来下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html
直接右键另存为就行了,下载完成后放到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)
补充:
还有一个三方库,名字为 BeautifulReport
Python unittest 之 BeautifulReport可视化报告