输出测试报告
unittest框架执行测试用例完成后会在控制台输出如上的结果,但实际测试过程中,我们需要输出测试报告,这个时候我们需要使用第三方模块。
1,HTMLTestRunner
HTMLTestRunner模块可以直接生成html格式的报告
- 下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html
- 下载后需要修改:
- 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
- 存放路径:将修改完成的模块存放在Python路径下Lib目录里即可。
run.py示例代码如下:
# -*- coding:utf-8 -*- # @author: 给你一页白纸 import time import unittest import HTMLTestRunner # 获取当前时间并指定时间格式,用于测试报告命名 now = time.strftime("%Y-%m-%d_%H_%M_%S") # 测试报告存储路径 report_dir = './report/' # 创建报告文件,并以写的形式打开文件,用于写入报告内容 fp = open(report_dir + now + "_report.html", 'wb') # 初始化一个HTMLTestRunner实例对象,用来生成报告 runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title="App自动化测试报告", description="测试用例情况") # 定义测试用例路径 test_dir='./testcase' # 加载测试用例 suite = unittest.defaultTestLoader.discover(test_dir, pattern='test_*.py') # 执行测试用例 runner.run(suite) fp.close()
运行run.py,会看到report中生成了html文件,即为测试报告
浏览器打开该文件,内容如下:
从报告内容中看出HTMLTestRunner.HTMLTestRunner()方法中参数所对应的内容,可以根据项目的实际需要指定参数内容。
2,美化版测试报告
在HTMLTestRunner基础上美化过的报告
- 下载地址: 链接:https://pan.baidu.com/s/1Wd_FXJBu3ATgmCQHkzbGag,提取码:f6uq
- 放置在Python安装路径的Lib文件夹里
run.py示例代码如下:
# -*- coding:utf-8 -*- # @author: 给你一页白纸 import time import unittest import BSTestRunner # 获取当前时间并指定时间格式,用于测试报告命名 now = time.strftime("%Y-%m-%d_%H_%M_%S") # 测试报告存储路径 report_dir = './report/' # 创建报告文件 fp = open(report_dir + now + "_report.html", 'wb') # 初始化一个HTMLTestRunner实例对象,用来生成报告 runner = BSTestRunner.BSTestRunner(stream=fp, title="App自动化测试报告", description="测试用例情况") # 定义测试用例路径 test_dir='./testcase' # 加载测试用例 suite = unittest.defaultTestLoader.discover(test_dir, pattern='test_*.py') # 执行测试用例 runner.run(suite) fp.close()
生成报告样式如下:
两种报告模板可根据自己喜好任意选择。