zoukankan      html  css  js  c++  java
  • Python单元测试框架unittest之生成测试报告(HTMLTestRunner)

    前言

    批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的。

    unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLTestRunner,HTMLTestRunner 是 Python 标准库的 unittest 模块的一个扩展,它可以生成 HTML的 测试报告。 

     

    一、安装HTMLTestRunner

    这个模块下载不能通过pip安装了,只能下载后手动导入,下载地址如下:
    python2版下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html 
    python3版下载地址:http://pan.baidu.com/s/1dEZQ0pz

     

     

    HTMLTestRunner.py文件就是我们需要下载的包,将下载的文件放入…pythonLib目录下 ,如C:Python27Lib,test_HTMLTestRunner.py是官方提供的HTMLTestRunner使用示例demo。

    在python环境下,输入 import  HTMLTestRunner 不报错即安装成功。

     

    二、使用该模块生成报告:

    1、目录结构
    • case包下面有baidu,wangyi两个包
    • 每个包下面分别有两个测试的py文件
    • 每个testx.py文件里各有2个test case
    • run_all_case.py文件:用来执行所有的test case且生成测试报告

    run_all_case.py文件脚本如下:

    复制代码
     1 # coding:utf-8
     2 
     3 import unittest
     4 import os
     5 import time
     6 import HTMLTestRunner
     7 
     8 # 用例路径
     9 case_path = os.path.join(os.getcwd())
    10 # 报告存放路径
    11 report_path = os.path.join(os.getcwd(), 'report')
    12 print report_path
    13 
    14 def all_case():
    15     discover = unittest.defaultTestLoader.discover(case_path, pattern="test*.py", top_level_dir=None)
    16     print discover
    17     return discover
    18 
    19 if __name__ == '__main__':
    20     # 1、获取当前时间,这样便于下面的使用。
    21     print  report_path
    22     now = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time()))
    23 
    24     # 2、html报告文件路径
    25     report_abspath = os.path.join(report_path, "result_"+now+".html")
    26 
    27     # 3、如果没有report_path,则创建此目录
    28     if (not os.path.exists(report_path)):
    29         os.makedirs(report_path)
    30 
    31     # 4、打开一个文件,将result写入此file中
    32     fp = open(report_abspath,"w")
    33     runner = HTMLTestRunner.HTMLTestRunner(stream=fp,
    34                                            title=u'接口自动化测试报告,测试结果如下:',
    35                                            description=u'用例执行情况:')
    36     # 5、调用add_case函数返回值
    37     runner.run(all_case())
    38     fp.close()
    复制代码

     

    2、运行后生成报告如下

     

  • 相关阅读:
    mysqlnd cannot connect to MySQL 4.1+ using old authentication
    nginx中查看关于php的配置和php-fpm的重启等操作
    nginx中查看关于php的配置和php-fpm的重启等操作
    linux面试题1
    linux笔试
    面试题
    shell脚本实例
    shell脚本
    mysql主从复制
    Discuz!NT静态文件缓存(SQUID)
  • 原文地址:https://www.cnblogs.com/muchengnanfeng/p/9566391.html
Copyright © 2011-2022 走看看