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

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

简介


  

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


导入 HTMLTestRunner



1.、这 个 模 块 下 载 不 能 通 过 pip 安装了,只能下载后手动导入,下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html


1232840-20190429152046444-1406129484.png


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、最核心的代码是下面的红色区域,这个就是本篇的重点啦。

1232840-20190429152917024-1676365984.png


生成 html 报告



1、我们只需把上面红色区域代码 copy 到上一篇的基础上稍做修改就可以了,这里主要有三个参数: 

  --stream:测试报告写入文件的存储区域

  --title:测试报告的主题

  --description:测试报告的描述


2、report_path 是存放测试报告的地址


1232840-20190430090152883-1583104116.png


测试报告详情



1、找到测试报告文件,用浏览器打开,点开 View 里的 Detail 可以查看详情描述。


1232840-20190430100128178-955501387.png


2、为了生成带中文描述的测试用例,可以在 case 中添加注释,如在 test_01 的脚本添加如下注释:


1232840-20190430100609877-46899857.png


3、重新运行后查看测试报告

1232840-20190430100523313-1526469244.png


参考代码



 # coding=utf-8
  #1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
  #2.注释:包括记录创建时间,创建人,项目名称。
  '''
  Created on 2019-4-29
  @author: 北京-宏哥
  Project:学习和使用discover批量执行测试用例
  '''
 #3.导入unittest模块
 import unittest
 import os
 #4.编写测试用例和断言
 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 就可以看到每执行一条用例,就会有如下输出:


1232840-20190430110722822-1596324694.png


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文件

相关文章
|
2月前
|
C语言 Python
python 调用c接口
【10月更文挑战第12天】 ctypes是Python的一个外部库,提供和C语言兼容的数据类型,可以很方便地调用C DLL中的函数
59 0
|
26天前
|
数据采集 存储 XML
Python爬虫:深入探索1688关键词接口获取之道
在数字化经济中,数据尤其在电商领域的价值日益凸显。1688作为中国领先的B2B平台,其关键词接口对商家至关重要。本文介绍如何通过Python爬虫技术,合法合规地获取1688关键词接口,助力商家洞察市场趋势,优化营销策略。
|
2天前
|
数据采集 人工智能 自然语言处理
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
Midscene.js 是一款基于 AI 技术的 UI 自动化测试框架,通过自然语言交互简化测试流程,支持动作执行、数据查询和页面断言,提供可视化报告,适用于多种应用场景。
53 1
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
|
9天前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
38 2
|
16天前
|
数据采集 存储 API
利用Python爬虫获取1688关键词接口全攻略
本文介绍如何使用Python爬虫技术合法合规地获取1688关键词接口数据,包括环境准备、注册1688开发者账号、获取Access Token、构建请求URL、发送API请求、解析HTML及数据处理存储等步骤,强调遵守法律法规和合理使用爬虫技术的重要性。
|
26天前
|
前端开发 JavaScript 测试技术
前端自动化测试
前端自动化测试是通过使用工具和脚本自动执行测试用例的过程,旨在提高测试效率、减少人为错误,并确保Web应用的功能在不同环境和设备上的一致性与稳定性。
|
1月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
115 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
26天前
|
JSON 安全 API
Python调用API接口的方法
Python调用API接口的方法
125 5
|
24天前
|
敏捷开发 测试技术 持续交付
自动化测试之美:从零开始搭建你的Python测试框架
在软件开发的马拉松赛道上,自动化测试是那个能让你保持节奏、避免跌宕起伏的神奇小助手。本文将带你走进自动化测试的世界,用Python这把钥匙,解锁高效、可靠的测试框架之门。你将学会如何步步为营,构建属于自己的测试庇护所,让代码质量成为晨跑时清新的空气,而不是雾霾中的忧虑。让我们一起摆脱手动测试的繁琐枷锁,拥抱自动化带来的自由吧!
|
1月前
|
机器学习/深度学习 SQL 安全
如何确保自动化安全测试的全面性和准确性
确保自动化安全测试的全面性和准确性,需集成多种工具(如SAST、DAST、IAST、SCA),编写自动化测试脚本,融入CI/CD流程,定期更新测试用例和工具,使用真实数据,持续维护代码,模拟攻击场景,运用机器学习,采用智能测试平台,并结合手动测试。这些策略有助于及时发现并修复安全问题,提升软件安全性。