当前位置: 首页 > news >正文

python接口自动化测试报告_python接口自动化(二十七)--html 测试报告——上(详解)...

简介

上一篇我们批量执行完用例后,生成的测试报告是文本形式的,不够直观,而且报告一般都是发给leader的,所以最好是直观一目了然,为了更好的展示测试报告,最好是生成 HTML 格式的。unittest 里面是不能生成 html 格式报告的,需

要导入一个第三方的模块:HTMLTestRunner。

导入 HTMLTestRunner

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、重新运行后查看测试报告

参考代码

1 # coding=utf-8

2 #1.先设置编码,utf-8可支持中英文,如上,一般放在第一行3

4 #2.注释:包括记录创建时间,创建人,项目名称。5 '''6 Created on 2019-4-29

7 @author: 北京-宏哥8 Project:学习和使用discover批量执行测试用例9 '''10 #3.导入unittest模块11 import unittest12 import os13 #4.编写测试用例和断言14 def all_case():15 # 待执行用例的目录16 #case_dir = "C:\\Users\\DELL\\PycharmProjects\\honggetest\\case"

17 case_dir = os.path.join(os.getcwd(), "case")18 testcase =unittest.TestSuite()19 discover =unittest.defaultTestLoader.discover(case_dir,20 pattern="test*.py",21 top_level_dir=None)22 # #discover方法筛选出用例,循环添加到测试套件中23 # for test_suit indiscover:24 # for test_case intest_suit:25 # #添加用力到testcase26 # testcase.addTests(test_case)27 # print(testcase)28

29 testcase.addTests(discover) # 直接加载 discover 可以兼容python2和330 print(testcase)31 returntestcase32 if __name__ == "__main__":33 # 返回实例34 runner =unittest.TextTestRunner()35 #导入第三方模块HTMLTestRunner36 import HTMLTestRunner37 #保存生成报告的路径38 report_path = "C:\\Users\\DELL\\PycharmProjects\\honggetest\\report\\result.html"

39 fp = open(report_path,'wb')40 runner = HTMLTestRunner.HTMLTestRunner(stream=fp,41 title=u"这是我的自动化测试用例",42 description=u"用例执行情况"

43 )44 # run 所有用例45 runner.run(all_case())46 #关闭文件,记住用open()打开文件后一定要记得关闭它,否则会占用系统的可打开文件句柄数。47 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 脚本源码分析与解释

1 class OutputRedirector(object)2 # 将输出进行重定向3

4 class Template_mixin(object)5 # 定义生成HTML结果文件所需要的模板。6 # 如果我们想改变HTML的格式等待,可以在这里进行改动7

8 class_TestResult(TestResult)9 # 定义继承自 unittest.TestResult 的 类。10 # 这里重写了 unittest.TestResult 的多个方法,比如 startTest(self, test) 等等11

12 classHTMLTestRunner(Template_mixin)13 # 这里可以说是使用 HTMLTestRunner.py 的入口。定义了多个我们可以看到的方法,比如 run(self, test)14

15 classTestProgram(unittest.TestProgram)16 # 这里继承自 unittest.TestProgram 类,重写了 runTests 方法。17 # 用于命令行执行测试

4、缺点:使用HTMLTestRunner的执行测试用例的过程中,如果中间中断执行,则已经执行完的用例结果也不会打印到html文件

相关文章:

  • python中的常量和变量_python中的常量和变量代码详解
  • 常用公差配合表图_《公差配合与测量技术》小结
  • pythonassert关键字_Python assert实现软件测试
  • php 设置会员到期_支付宝推出“轻会员”,先享受优惠再交会员费
  • 很装b那种cmd命令_CMD命令混淆分析
  • 宏定义判定x是否为整数_整数与整数都还差不多从“高斯整数”到“代数整数”...
  • python 邻接矩阵_用Python做社会网络分析(1):简介
  • python投掷骰子实验报告_用Python来掷个色子玩~
  • qt 录屏 显示鼠标_Qt官方示例系统托盘
  • redis两台机器集群_redis4.0 cluster集群安装方法
  • python request请求参数_python+requests——简单发送请求——以及包括参数的请求
  • spring boot 事务_体验微服务分布式事务开源框架ServiceComb的Saga TCC模型
  • python的特别注释_写好python的注释文档很容易
  • python字符串查找的四种方法_Python之字符串的遍历的4种方式
  • python监控网页报警自动配置交换机_python实现自动监控网站并发送邮件告警
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • Hibernate最全面试题
  • Invalidate和postInvalidate的区别
  • JavaScript学习总结——原型
  • JavaScript中的对象个人分享
  • JAVA并发编程--1.基础概念
  • Java到底能干嘛?
  • tensorflow学习笔记3——MNIST应用篇
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 测试开发系类之接口自动化测试
  • 复习Javascript专题(四):js中的深浅拷贝
  • 深入 Nginx 之配置篇
  • 使用Swoole加速Laravel(正式环境中)
  • 我从编程教室毕业
  • 云大使推广中的常见热门问题
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • ​iOS安全加固方法及实现
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #stm32整理(一)flash读写
  • (2)STL算法之元素计数
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (六)c52学习之旅-独立按键
  • (三)终结任务
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (一)RocketMQ初步认识
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .bat批处理出现中文乱码的情况
  • .gitignore文件使用
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .Net FrameWork总结
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .php结尾的域名,【php】php正则截取url中域名后的内容
  • /var/log/cvslog 太大
  • @RequestMapping 的作用是什么?
  • @Valid和@NotNull字段校验使用