python中HTMLTestRunner生成测试报告,与unittest模块结合

前提:

         先下载HTMLTestRunner.py

         下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html

         参考:http://www.cnblogs.com/testyao/p/5658200.html

    参考:http://www.cnblogs.com/miniren/p/5301081.html#commentform

         参考:https://www.cnblogs.com/findyou/p/6925733.html

         里面提供写好的适合python3使用的:http://pan.baidu.com/s/1dEZQ0pz

         把这个文件放在你安装python的lib目录下(我的在C:Program FilesPython36Lib)

一:测试套件执行少量用例,仅生成测试报告

         #############run01.py############# 

import unittest
import HTMLTestRunner
import os

#从文件test_case/company/test_getLog加载GetLog类
from test_case.company.test_getLog import GetLog

#使用测试套件,添加GetLog类里面的test_getLogN方法
suite = unittest.TestSuite()  #初始化一个测试套件Suite实例
suite.addTest(GetLog('test_getLogN'))  #GetLog是类名,test_getLogN是测试函数

#输出到特定目录下
# 父目录:os.path.dirname(所在目录:os.path.dirname(绝对路径:os.path.realpath(__file__)))
cur_path = os.path.dirname(os.path.realpath(__file__))  #当前文件所在目录
report_path = os.path.join(cur_path, 'report')  #拼接成一个新目录
report_abspath = os.path.join(report_path, "result.html")

#以字节的方式写入目录下的report.html文件里
st = open(report_abspath, 'wb')
HTMLTestRunner.HTMLTestRunner(stream=st, title= '公司端接口自动化测试报告').run(suite)

二、执行多条用例,仅生成测试报告

         #############run02.py#############

#coding=utf-8
import unittest
import os
import HTMLTestRunner

#仅生成测试报告不发送邮件
# 父目录:os.path.dirname(所在目录:os.path.dirname(绝对路径:os.path.realpath(__file__)))
cur_path = os.path.dirname(os.path.realpath(__file__))  #当前文件存在的路径
case_path = os.path.join(cur_path, 'test_case')         #测试case目录
report_path = os.path.join(cur_path, 'report')          #测试报告存放目录


def all_case():
    '''第一步:加载所有的测试用例'''

    # 批量加载iscover方法里面有三个参数:
    #-case_dir:这个是待执行用例的目录。
    #-pattern:这个是匹配脚本名称的规则,test*.py意思是匹配test开头的所有脚本。
    #-top_level_dir:这个是顶层目录的名称,一般默认等于None就行了。
# discover加载到的用例是一个list集合,需要重新写入到一个list对象testcase里,这样就可以用unittest里面的TextTestRunner这里类的run方法去执行。 discover = unittest.defaultTestLoader.discover(case_path, pattern="test_ljj*.py", top_level_dir=None) # print(discover) return discover def run_case(all_case): '''第二步:执行所有的用例, 并把结果写入HTML测试报告''' # 测试报告文件路径 report_abspath = os.path.join(report_path, "result.html") fp = open(report_abspath, "wb") # 批量执行测试用例三个参数: --stream:测试报告写入文件的存储区域 --title:测试报告的主题 --description:测试报告的描述 runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u'日本公司端自动化测试报告,测试结果如下:', description=u'用例执行情况:') # 调用add_case函数返回值 runner.run(all_case) fp.close() if __name__ == "__main__": all_case = all_case() # 1加载用例 run_case(all_case) # 2执行用例
原文地址:https://www.cnblogs.com/lijinglj/p/9732167.html