别再只用Allure啦!这个工具轻松搞定高颜值测试报告

boyanx18小时前技术教程1

#头号创作者激励计划#

聊聊背景

在软件开发和测试过程中,自动化测试报告是记录测试执行结果、分析测试质量并指导后续改进的重要文档

简单的事情重复做,这也是上家单位的理念体现。其编写主要基于以下几个核心需求:

1. 提高测试效率和透明度

自动化测试通过脚本替代人工操作,能快速执行大量重复用例,但执行结果需要以结构化报告形式呈现,便于团队快速定位问题。

报告提供实时可视化数据(如通过率、失败用例、执行时长),帮助团队掌握测试进度。

2. 支持决策与问题追溯

开发、测试和产品团队需依赖报告中的详细日志(如错误信息)复现缺陷,明确问题所在。

管理层通过汇总报告(如测试覆盖率、缺陷趋势)评估版本质量,决定是否发布。

报告可作为项目交付物,可以给客户或第三方查验。

3. 持续改进测试流程

通过历史报告对比(如不同版本的失败用例分布),识别测试用例设计的不足或自动化脚本的稳定性问题。

结合数据分析(如高频失败模块),优化测试策略和资源分配。

4. 自动化测试报告的典型应用场景

  • 周期构建:持续集成(CICD)中自动生成报告,反馈代码变更对质量的影响。
  • 版本发布前:汇总测试结果,作为上线准入依据。
  • 故障复盘:通过历史报告追溯缺陷引入节点。

5. 报告的核心内容

  • 概述:包括测试时间、环境、版本号、执行机配置等基础信息。
  • 结果概览:通过率、失败/阻塞、跳过用例数。
  • 详情:测试用例、时长、结果、截图。
  • 统计分析:本次统计,与历史数据的对比(如缺陷增长趋势)。

自动化测试报告类型

自动化测试报告XTestRunner

近期在整理Unittest测试框架时,看到自带的HTMLTestRunner有些简单,同时又探索一款支持unittest的高颜值自动化测试报告——新玩意儿XTestRunner

首先导入包,pip install XTestRunner

Collecting XTestRunner
  Downloading xtestrunner-1.8.4-py3-none-any.whl.metadata (3.6 kB)
Requirement already satisfied: jinja2<4.0.0,>=3.1.2 in d:\zheng\python\python38\lib\site-packages (from XTestRunner) (3.1.6)
Requirement already satisfied: requests>=2.22.0 in d:\zheng\python\python38\lib\site-packages (from XTestRunner) (2.32.3)
Requirement already satisfied: MarkupSafe>=2.0 in d:\zheng\python\python38\lib\site-packages (from jinja2<4.0.0,>=3.1.2->XTestRunner) (2.1.5)
Requirement already satisfied: charset-normalizer<4,>=2 in d:\zheng\python\python38\lib\site-packages (from requests>=2.22.0->XTestRunner) (3.4.1)
Requirement already satisfied: idna<4,>=2.5 in d:\zheng\python\python38\lib\site-packages (from requests>=2.22.0->XTestRunner) (3.10)
Requirement already satisfied: urllib3<3,>=1.21.1 in d:\zheng\python\python38\lib\site-packages (from requests>=2.22.0->XTestRunner) (2.2.3)
Requirement already satisfied: certifi>=2017.4.17 in d:\zheng\python\python38\lib\site-packages (from requests>=2.22.0->XTestRunner) (2025.1.31)
Downloading xtestrunner-1.8.4-py3-none-any.whl (554 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 554.9/554.9 kB 367.4 kB/s eta 0:00:00
Installing collected packages: XTestRunner
Successfully installed XTestRunner-1.8.4


再次,runtest.py中代码如下:

import time
import unittest
from XTestRunner import HTMLTestRunner
GLOBAL_REPORTBASEPATH = 'D:/zheng/testcode/po_demo_unittest'
GLOBAL_CURRENT=time.strftime("%Y%m%d_%H%M%S", time.localtime(time.time()))
start_dir = GLOBAL_REPORTBASEPATH + "/test_dir"
suit = unittest.defaultTestLoader.discover(start_dir, pattern='test_*.py', top_level_dir=None)
if __name__ == "__main__":
reportfile = GLOBAL_REPORTBASEPATH + '/test_report/' + GLOBAL_CURRENT + 'testreport.html'
fp=open(reportfile,'wb')
    runner=HTMLTestRunner(stream=fp,
                          title="自动化测试报告",
                          description="结果运行环境:Windows11,Chrome浏览器",        tester="枫叶",
                          language="zh-CN"
                          )
    runner.run(suit)
    fp.close()

自动化测试报告发送邮件

1. 导入包yagmail

import yagmail
yag=yagmail.SMTP(user="***@163.com",password="***",
                 host="smtp.163.com")
contents=['This is the body, and here is just text http://somedomain/image.png',
            'You can find an audio file attached.', '/local/path/song.mp3']
subject="This is the Subject"
yag.send("***@163.com","This is Subject",contents)
yag.close()


  • 出现报错:

报错TypeError: unhashable type: 'list'

  • 解决:

改为yagmail 版本=0.11.215,为了不用最新版本,避免兼容问题

再次运行成功了!

2. 接下来集成到run_test.py

import time
import unittest
import yagmail
from HTMLTestRunner import HTMLTestRunner
def send_email(report):
    yag=yagmail.SMTP(user="***@163.com",
                     password="***",
                     host='smtp.163.com')
    subject="自动化测试报告"
    contents="请查看附件"
    yag.send(['***@163.com','***@163.com'],subject,contents,report)
    print("Email has sent out!")
if __name__ =="__main__":
    test_dir='./test_case'
    suit=unittest.defaultTestLoader.discover(test_dir,pattern='test_*.py')
    html_report='./test_report/'+'testreport.html'
    fp=open(html_report,'wb')
    runner=HTMLTestRunner(stream=fp,
                          title="测试报告",
                          description="运行环境:Windows11,Chrome浏览器"
                          )
    runner.run(suit)
    fp.close()
send_email(html_report)

打开附件,同样地用浏览器打开html格式,能够查看XTestRunner自动化测试报告已经生成。


小结

自动化测试报告是自动化测试流程的重要产出物,它不仅记录了测试执行结果,还为团队提供了关键的质量洞察和决策依据。

通过规范的自动化测试报告,团队能够将测试数据转化为可行动指南,最终提升我们的软件交付质量。

可以到我的个人号:atstudy-js

加入【软件测试训练营】,你将解决升职加薪,转型转岗,职业规划等多款问题,案例项目+实战演练,轻松应对职场

相关文章

聚铭安全管家平台2.0实战解码 | 安服篇(三):配置保障 自动核查

在安全运营中,最令人崩溃的莫过于:1、“明明加固过,怎么又被攻破了?”SSH端口手动开启、防火墙规则被误删、关键配置遭篡改……人工操作难免疏漏;攻击者持续扫描探测,专门针对"加固后管理真空期&...

终于来了!这才是AI工具该有的样子:离线用秒分类,还能自动改名

之前就说AI出来后要重写很多软件,现在果真如此,最开始是记事本一类的工具,因为与现在模型比较好融合。虽然说有AI融合肯定是挺好的,但问题在于大多需要联网使用,有的还要自己对接API接口啥的,比较麻烦,...

深度解析WinMerge 2.16.50:开源文件比对利器

WinMerge 2.16.50作为开源免费的文件比较工具,在代码审计、文档修订等场景中表现卓越。其核心优势在于多维度比对能力:支持文本文件逐行差异分析,以色彩标注新增、删除、修改内容;可比对文件夹...

中美AI工具,从电子图册抓取内容汇总,你猜猜哪个工具胜出?

中美AI工具日常使用对比,从电子图册抓取内容汇总,你猜猜哪个工具胜出?本人从事外贸行业,公司需要新做一个独立站。在公司给我的只有一个电子版图册,现在需要归类所有一级目录,202级目录,三级目录,我开始...

自我修行第四篇——对比(对比自己的句子)

你肯定有这样的经历朋友圈刷到同龄人的成就,内心悄然涌上落寞;过节亲戚朋友凑一起讨论收入,恨不得缩成桌角的尘埃;对镜自视,平凡的倒影让自己生出自卑的涟漪。这是对比打造的牢笼,那如何逃脱对比的牢笼?仅需三...

广东一女子发现影院座椅上布满白色虫卵,“小部分在爬”!涉事影院回应、专家提醒→

7月31日,话题“电影院座椅 虫卵”登上热搜,引发关注。7月29日,一段网络视频显示,广东一女子进入影院后,发现座椅靠背上布满白色虫卵,“小部分在爬”。图源:当事人发布的视频截图据媒体报道,涉事影院店...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。