测试任务执行完成后,我们需要一份通俗易懂的测试报告来展示自动化测试的结果。
HTMLTestRunner是Python的单元测试框架unittest的一个扩展,它生成易于使用的HTML测试报告。与TextTestRunner一样提供run()方法来执行测试套件或测试用例,返回特定的值表示执行结果。
一、HTMLTestRunner配置
1、HTMLTestRunner.py的下载
下载地址:
python2:http://tungwaiyip.info/software/HTMLTestRunner.html
右键另存为下载HTMLTestRunner.py,将文件放到...pythonLib目录下
python3:https://pan.baidu.com/s/1k4m6JFelcWH_QiHGlvjsUQ
HTMLTestRunner是基于Python2开发的,要支持python3,需要修改HTMLTestRunner.py文件中的部分内容。上面下载链接为已修改文件,将文件放到...pythonLib目录下。
在python交互模式下导入HTMLTestRunner模块,系统没有报错则说明添加成功。
>>> import HTMLTestRunner >>>
2、生成HTML测试报告
# coding:utf-8
import unittest, time
from appium import webdriver
from HTMLTestRunner import HTMLTestRunner
if __name__ == '__main__': suite = unittest.TestSuite() suite.addTest(TestCalculator('test_add')) # 执行测试,使用HTMLTestRunner生成测试报告 fp = open('./result.html', 'wb') runner = HTMLTestRunner(stream=fp, title='计算器测试报告', description='测试用例执行情况') runner.run(suite) fp.close()
- open(),自动创建并打开以二进制模式打开指定目录下的result.html文件
- 初始化一个HTMLTestRunner对象runner,stream制定测试报告文件,title定义测试报告的标题,description定义测试报告的副标题
- HTMLTestRunner的run()方法运行测试套件
- fp.close()关闭测试报告文件
测试执行完成后,打开目录中生成的result.html文件查看测试报告
二、优化测试报告
1、测试报告文件命名优化
上面将测试报告文件命名为result.html,每次生成报告时会将之前的报告覆盖掉。我们在测试运行前将原来的测试报告修改名字以保存,但是这样将花费时间且可能会忘记。我们将测试报告文件名加上当前时间,使生成的报告更不会重叠,更清晰。
Python中的time模块提供了丰富的关于时间的操作
>>> import time >>> time.time() 1543739732.9201088 >>> time.ctime() 'Sun Dec 2 16:35:39 2018' >>> time.localtime() time.struct_time(tm_year=2018, tm_mon=12, tm_mday=2, tm_hour=16, tm_min=35, tm_sec=48, tm_wday=6, tm_yday=336, tm_isdst=0) >>> time.strftime("%Y-%m-%d %H:%M:%S") '2018-12-02 16:36:57' >>>
代码修改如下:
if __name__ == '__main__': suite = unittest.TestSuite() suite.addTest(TestCalculator('test_add')) suite.addTest(TestCalculator('test_sub')) # 执行测试,使用HTMLTestRunner生成测试报告 now_time = time.strftime("%Y%m%d_%H-%M-%S") file_path = open('./'+now_time+'_TestResult.html', 'wb') runner = HTMLTestRunner( stream=file_path, # 文件 title='计算器测试报告', # 标题 description='测试用例执行情况', # 副标题 ) runner.run(suite) file_path.close()
运行后生成的报告文件为:
2、测试报告优化
python的注释有两种,一种是comment,一种是doc string。comment是普通的注释,doc string用于函数、类和方法的描述。
在类和方法下方添加""" """或''' '''来添加doc string类型的注释。HTMLTestRunner可以读取doc string类型的注释
class TestCalculator(unittest.TestCase): """计算器应用case""" def test_add(self): ''' 加运算 '''
运算后报告如下: