自动化测试执行完成之后,我们需要生成测试报告来查看测试结果,使用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
注意:该修改针对的是使用Python3的朋友,如果你安装的是Python2,那么就不需要进行修改,直接使用即可。
存放路径:
将修改完成的模块存放在Python路径下Lib目录里面即可
案例:
在前一篇文章的runtest.py的基础上进行修改,从而得到关于百度搜索的测试报告
import unittest
from HTMLTestRunner import HTMLTestRunner
import time
test_dir = './test_case'
discovery = unittest.defaultTestLoader.discover(test_dir, pattern='test*.py')
if __name__ == '__main__':
# 存放报告的文件夹
report_dir = './test_report'
# 报告命名时间格式化
now = time.strftime("%Y-%m-%d %H_%M_%S")
# 报告文件完整路径
report_name = report_dir+'./'+now+"result.html"
# 打开文件再报告文件写入测试结果
with open(report_name, "wb") as f:
runner = HTMLTestRunner(stream=f, title='百度搜索测试报告', description='用例执行结果:')
# 运行测试用例
runner.run(discovery)
# 关闭报告文件
f.close()
代码分析:
首先,将HTMLTestRunner模块用import导入进来
其次,通过open()方法以二进制写模式打开当前目录下的以'当前时间+result.html'(将报告名称以当前时间命名,可以便于我们查看),如果没有,则自动创建该文件
接着,调用HTMLTestRunner模块下的HTMLTestRunner类。stream指定测试报告文件,title用于定义测试报告的标题,description用于定义测试报告的副标题。
最后,通过HTMLTestRunner的run()方法来运行测试套件中所组装的测试用例。最后通过close()关闭测试报告文件。
测试报告:
美化测试报告
下载地址:
https://github.com/easonhan007/HTMLTestRunner
修改方式,存储路径参照上面
代码实现:
和上面一样,除了把HTMLTestRunner换成BSTestRunner