python接口自动化(二十七)--html 测试报告——上(详解)
简介
上一篇我们批量执行完用例后,生成的测试报告是文本形式的,不够直观,而且报告一般都是发给leader的,所以最好是直观一目了然,为了更好的展示测试报告,最好是生成 HTML 格式的。unittest 里面是不能生成 html 格式报告的,需
要导入一个第三方的模块:HTMLTestRunner。
导入 HTMLTestRunner
1.、这 个 模 块 下 载 不 能 通 过 pip 安装了,只能下载后手动导入,下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html
2、Download 下 HTMLTestRunner.py 文件就是我们需要下载的包。注意点击后会进入其源码,可以通过另存为将其下载下来或者直接Ctrl+A加Ctrl+C,Ctrl+V,推荐另存为
3、下载后手动拖到 python 安装文件的 Lib 目录下
demo 解析
1、下载 Download 下的第二个文件 test_HTMLTestRunner.py,这个就是官方给的一个测试demo 了,从这个文件可以找到该模块的用法。
2、找到下图这段,就是官方给的一个 demo 了,test_main()里上半部分就是加载测试 case,我们不需要搞这么复杂。
3、最核心的代码是下面的红色区域,这个就是本篇的重点啦。
生成 html 报告
1、我们只需把上面红色区域代码 copy 到上一篇的基础上稍做修改就可以了,这里主要有三个参数:
--stream:测试报告写入文件的存储区域
--title:测试报告的主题
--description:测试报告的描述
2、report_path 是存放测试报告的地址
测试报告详情
1、找到测试报告文件,用浏览器打开,点开 View 里的 Detail 可以查看详情描述。
2、为了生成带中文描述的测试用例,可以在 case 中添加注释,如在 test_01 的脚本添加如下注释:
3、重新运行后查看测试报告
参考代码
- # coding=utf-
- #.先设置编码,utf-8可支持中英文,如上,一般放在第一行
- #.注释:包括记录创建时间,创建人,项目名称。
- '''
- Created on --
- @author: 北京-宏哥
- Project:学习和使用discover批量执行测试用例
- '''
- #.导入unittest模块
- import unittest
- import os
- #.编写测试用例和断言
- def all_case():
- # 待执行用例的目录
- #case_dir = "C:\\Users\\DELL\\PycharmProjects\\honggetest\\case"
- case_dir = os.path.join(os.getcwd(), "case")
- testcase = unittest.TestSuite()
- discover = unittest.defaultTestLoader.discover(case_dir,
- pattern="test*.py",
- top_level_dir=None)
- # #discover方法筛选出用例,循环添加到测试套件中
- # for test_suit in discover:
- # for test_case in test_suit:
- # #添加用力到testcase
- # testcase.addTests(test_case)
- # print(testcase)
- testcase.addTests(discover) # 直接加载 discover 可以兼容python2和3
- print(testcase)
- return testcase
- if __name__ == "__main__":
- # 返回实例
- runner = unittest.TextTestRunner()
- #导入第三方模块HTMLTestRunner
- import HTMLTestRunner
- #保存生成报告的路径
- report_path = "C:\\Users\\DELL\\PycharmProjects\\honggetest\\report\\result.html"
- fp = open(report_path,'wb')
- runner = HTMLTestRunner.HTMLTestRunner(stream=fp,
- title=u"这是我的自动化测试用例",
- description=u"用例执行情况"
- )
- # run 所有用例
- runner.run(all_case())
- #关闭文件,记住用open()打开文件后一定要记得关闭它,否则会占用系统的可打开文件句柄数。
- fp.close()
小结
1、fp.close() #关闭文件。python会在一个文件不用后自动关闭文件,不过这一功能没有保证,最好还是养成自己关闭的习惯。 如果一个文件在关闭后还对其进行操作会产生ValueError
2、问题: 执行测试用例的过程中,不会打印任何东西,导致上个厕所或第二天回来时,根本不知道执行到哪了,或者执行多少测试用例了。
解决思路: 每次执行一个测试用例时,就打印该测试用例的名称。
解决方案: 调用HTMLTestRunner时,定义 verbosity 为大于1的整数,比如说 2:
runner=HTMLTestRunner.HTMLTestRunner(fp,title="xxxx",description="xxx",verbosity=2)
在控制台console 就可以看到每执行一条用例,就会有如下输出:
3、HTMLTestRunner 脚本源码分析与解释
- class OutputRedirector(object)
- # 将输出进行重定向
- class Template_mixin(object)
- # 定义生成HTML结果文件所需要的模板。
- # 如果我们想改变HTML的格式等待,可以在这里进行改动
- class _TestResult(TestResult)
- # 定义继承自 unittest.TestResult 的 类。
- # 这里重写了 unittest.TestResult 的多个方法,比如 startTest(self, test) 等等
- class HTMLTestRunner(Template_mixin)
- # 这里可以说是使用 HTMLTestRunner.py 的入口。定义了多个我们可以看到的方法,比如 run(self, test)
- class TestProgram(unittest.TestProgram)
- # 这里继承自 unittest.TestProgram 类,重写了 runTests 方法。
- # 用于命令行执行测试
4、缺点:使用HTMLTestRunner的执行测试用例的过程中,如果中间中断执行,则已经执行完的用例结果也不会打印到html文件
python接口自动化(二十七)--html 测试报告——上(详解)的更多相关文章
- python接口自动化(七)--状态码详解对照表(详解)
简介 我们为啥要了解状态码,从它的作用,就不言而喻了.如果不了解,我们就会像个无头苍蝇,横冲直撞.遇到问题也不知道从何处入手,就是想找别人帮忙,也不知道是找前端还是后端的工程师. 状态码的作用是:we ...
- python接口自动化测试二十七:密码MD5加密 ''' MD5加密 ''' # 由于MD5模块在python3中被移除 # 在python3中使用hashlib模块进行md5操作 import hashlib # 待加密信息 str = 'asdas89799,.//plrmf' # 创建md5对象 hl = hashlib.md5() # Tips # 此处必须声明encode # 若写法为
python接口自动化测试二十七:密码MD5加密 ''' MD5加密 '''# 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作import has ...
- Postman接口自动化--Postman Script脚本功能使用详解
Postman Script 功能,支持原生的JS,所以可以使用JS解决很多接口自动化的一些问题,例如接口依赖.接口参数专递和接口断言等: 这里主要是针对Pre-Request Script 和 Te ...
- python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
简介 有些 post 的请求参数是 json 格式的,这个前面发送post 请求里面提到过,需要导入 json模块处理.现在企业公司一般常见的接口因为json数据容易处理,所以绝大多数返回数据也是 j ...
- python接口自动化测试二十三:文件上传
# 以禅道为例: 一.创建一个类,类里面写一个登录方法: import requestsclass LoginZentao(): def __init__(self, s): # 初始化 self.s ...
- python接口自动化测试二十七:加密与解密MD5、base64
# MD5加密 # 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作 import hashlib def MD5(str): # 创建md5对象 hl ...
- python接口自动化测试二十四:上传多个附件,参数化
# 添加多个附件参数化files = [("1.png", "1.png") ("2.png", "2.png") ]d ...
- python接口自动化测试二十七:密码MD5加密
# MD5加密 # 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作import hashlib def MD5(str): # 创建md5对象 hl ...
- postman接口自动化,环境变量的用法详解(附postman常用的方法)
在实现接口自动测试的时候,会经常遇到接口参数依赖的问题,例如调取登录接口的时候,需要先获取登录的key值,而每次请求返回的key值又是不一样的,那么这种情况下,要实现接口的自动化,就要用到postma ...
- 【转载自JHBlogs的博客】postman接口自动化,环境变量的用法详解(附postman常用的方法)
在实现接口自动测试的时候,会经常遇到接口参数依赖的问题,例如调取登录接口的时候,需要先获取登录的key值,而每次请求返回的key值又是不一样的,那么这种情况下,要实现接口的自动化,就要用到postma ...
随机推荐
- Java 8 的新特性和改进总览
这篇文章是对Java 8中即将到来的改进做一个面向开发者的综合性的总结,JDK的这一特性将会在2013年9月份发布. 在写这篇文章的时候,Java 8的开发工作仍然在紧张有序的进行中,语言特新和API ...
- [翻译] Fast Image Cache
https://github.com/path/FastImageCache Fast Image Cache is an efficient, persistent, and—above all—f ...
- SQL_DDL_建库建表
--IF DB_ID('testdb') IS NULL --CREATE DATABASE testdb USE master GO IF EXISTS ( SELECT * FROM sys.da ...
- leetcode笔记:Same Tree
一. 题目描写叙述 Given two binary trees, write a function to check if they are equal or not. Two binary tre ...
- Android触摸事件
简单介绍: 做了一个语音发送UI的小demo. 按下显示语音窗体,依据音量调节UI音量显示,上划至窗体显示取消发送. 原理: 1:获取什么事件来运行操作: 给Button加入setOnTouchLis ...
- 用Spark向HBase中插入数据
java代码如下: package db.insert; import java.util.Iterator; import java.util.StringTokenizer; import org ...
- [leetcode]Balanced Binary Tree @ Python
原题地址:http://oj.leetcode.com/problems/balanced-binary-tree/ 题意:判断一颗二叉树是否是平衡二叉树. 解题思路:在这道题里,平衡二叉树的定义是二 ...
- jQuery中开发插件的两种方式(附Demo)
做web开发的基本上都会用到jQuery,jQuery插件开发两种方式:一种是类扩展的方式开发插件,jQuery添加新的全局函数(jQuery的全局函数是属于jQuery命名空间的函数),如果将jQu ...
- C#_文件读写常用类介绍
首先要熟悉.NET中处理文件和文件夹的操作.File类和Directory类是其中最主要的两个类.了解它们将对后面功能的实现提供很大的便利. 本节先对和文件系统相关的两个.NET类进行简要介 ...
- 10个步骤让你成为高效的Web开发者
要成为高产.高效的Web开发者,这需要我们做很多工作,来提高我们的工作方式,以及改善我们的劳动成果. 下面是10个提高效率的步骤,虽然不能保证解决你在开发中的所有问题,但至少是非常实用的,可以简化你的 ...