前言

批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成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文件就是我们需要下载的包,将下载的文件放入…\python\Lib目录下 ,如C:\Python27\Lib,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、运行后生成报告如下

Python单元测试框架unittest之生成测试报告(HTMLTestRunner)的更多相关文章

  1. Python单元测试框架之pytest -- 生成测试报告

    继续pytest单元测试框架的学习,pytest可以生成多种类型的测试报告.这一节就来学习pytest如何生成测试报告. 创建test_calss.py 测试用例文件,这里以测试该文件为例. #cod ...

  2. Python单元测试框架unittest之深入学习

    前言 前几篇文章该要地介绍了python单元测试框架unittest的使用,本篇文章系统介绍unittest框架. 一.unittest核心工作原理 unittest中最核心的四个概念是:test c ...

  3. Python单元测试框架unittest使用方法讲解

    这篇文章主要介绍了Python单元测试框架unittest使用方法讲解,本文讲解了unittest概述.命令行接口.测试案例自动搜索.创建测试代码.构建测试套件方法等内容,需要的朋友可以参考下   概 ...

  4. Python单元测试框架unittest之单用例管理(一)

    一.概述 本文介绍python的单元测试框架unittest,unittest原名为PyUnit,是由java的JUnit衍生而来,这是Python自带的标准模块unittest.unittest是基 ...

  5. Python3 Selenium自动化web测试 ==> 第一节 起始点之Python单元测试框架 unittest

    前置步骤 Python版本:3.6.4 selenium版本:3.11.0 >>> import selenium >>> help(selenium) IDE:P ...

  6. Python单元测试框架unittest重要属性 与 用例编写思路

    前言 本文为转载,原文地址作者列举python unittest这个测试框架的主要属性和 测试用例思路 unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行, ...

  7. Python单元测试框架unittest

    学习接口自动化测试时接触了unittest单元测试框架,学习时参照了虫师编写的<selenium2自动化测试实战>,个人觉得里面讲的例子还比较容易理解的. 一.基础 1.main()和框架 ...

  8. python单元测试框架-unittest(一)

    简介 unittest单元测试框架不仅可以适用于单元测试,还可以使用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果. ...

  9. Python单元测试框架——unittest

    测试的常用规则 一个测试单元必须关注一个很小的功能函数,证明它是正确的: 每个测试单元必须是完全独立的,必须能单独运行.这样意味着每一个测试方法必须重新加载数据,执行完毕后做一些清理工作.通常通过se ...

随机推荐

  1. [leetcode] 72. 编辑距离(二维动态规划)

    72. 编辑距离 再次验证leetcode的评判机有问题啊!同样的代码,第一次提交超时,第二次提交就通过了! 此题用动态规划解决. 这题一开始还真难到我了,琢磨半天没有思路.于是乎去了网上喵了下题解看 ...

  2. 返回给前端样式数据整合Swagger

    对于前端样式整合swagger,只对接口做增强,不对接口逻辑做修改,当json样式拼接完成,我们把json转为对应的实体类即可. 前端json样式对象构造参考:https://workshops.ot ...

  3. Django框架中logging的使用

    Django框架中logging的使用 日志是我们在项目开发中必不可少的一个环节,Python中内置的logging已经足够优秀到可以直接在项目中使用. 本文介绍了如何在DJango项目中配置日志. ...

  4. Nginx 配置实例-配置高可用

    Nginx 配置实例-配置高可用 1. 实现效果 2. 两台机器 nginx 的安装 2.1 192.168.25.120 中 nginx 的安装 2.1.1 安装 pcre 依赖 2.1.2 安装其 ...

  5. 如何保证mq不丢消息

    1.消息的发送流程 一条消息从生产到被消费,将会经历3个阶段 生产阶段,Producer 新建消息,然后通过网络将消息投递给MQ Broker 存储阶段,消息将会存储在Broker端磁盘中 消费阶段, ...

  6. 【NX二次开发】体素特征相关函数(块、柱、锥、球)

    NX Open允许用户创建和查询所有基本体素特征,通过API函数建立基本体素特征返回的是相应的特征标识,如果需要可以通过函数UG_MODL_ask_feat_body()获得特征对应的实体对象标识.基 ...

  7. 【题解】逐个击破 luogu2700

    题目 题目描述: 现在有N个城市,其中K个被敌方军团占领了,N个城市间有N-1条公路相连,破坏其中某条公路的代价是已知的. 现在,告诉你K个敌方军团所在的城市,以及所有公路破坏的代价,请你算出花费最少 ...

  8. Linux关闭打开防火墙命令

    Linux下打开和关闭防火墙 1.及时生效,重启后复原 关闭:service iptables stop  开启:service iptalbes start  查看状态:service iptabl ...

  9. Java-Java8特性(更新中)

    Java8新特性 之前零零散散写了很多java8的内容,今天做一个整理,也算是整理用到的内容,当然细化的话还有很多,只是说暂时用不到,为了面试的话已经够了 日期计算 Lambda表达式 函数式接口(比 ...

  10. Docker笔记--操作容器命令

    Docker笔记--操作容器命令 创建容器 docker [container] create-- 创建容器,使用docker [container] create命令新建的容器处于停止状态,可以使用 ...