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

XtestRunner一个比较好用好看的生成测试报告的工具

XtestRunner

XtestRunner 是一款基于 Python 的测试报告生成工具,专为 unittest 和 pytest 框架设计,支持生成美观、详细的 HTML 测试报告,同时具备日志记录、截图嵌入、失败重跑等实用功能。以下是关于如何使用 XtestRunner 生成测试报告的详细指南:

一、XtestRunner 安装

首先需要通过 pip 安装 XtestRunner:

pip install XtestRunner

二、核心功能与优势

  • 美观的 HTML 报告:支持自定义标题、描述、LOGO,报告包含用例统计、详细日志、截图等信息。
  • 多框架支持:兼容 unittest 和 pytest 测试框架。
  • 截图嵌入:失败用例可自动嵌入截图(需手动调用截图方法)。
  • 日志集成:自动记录测试过程中的日志,便于问题定位。
  • 失败重跑:支持失败用例重跑,提高报告准确性。
  • 邮件发送:可将生成的报告通过邮件发送给指定接收人。

三、使用方法(分框架示例)

1. 基于 unittest 框架

步骤如下:

  1. 编写 unittest 测试用例;
  2. 使用 XtestRunner 的 HTMLTestRunner 作为测试运行器;
  3. 运行用例并生成报告。

示例代码

import unittest

from XtestRunner import HTMLTestRunner

class TestDemo(unittest.TestCase):

    """测试用例示例"""

    def test_success(self):

        """成功的用例"""

        self.assertEqual(1 + 1, 2)

    

    def test_failure(self):

        """失败的用例"""

        self.assertEqual(1 + 1, 3)

    

    def test_error(self):

        """出错的用例"""

        raise ValueError("自定义错误")

if __name__ == '__main__':

    # 加载用例

    suite = unittest.TestLoader().loadTestsFromTestCase(TestDemo)

    

    # 生成报告

    with open('report.html', 'wb') as f:

        runner = HTMLTestRunner(

            stream=f,

            title="测试报告标题",

            description="报告描述:这是一个示例报告",

            tester="测试人员姓名"

        )

        runner.run(suite)

2. 基于 pytest 框架

需结合 pytest 的插件机制,通过 pytest.main() 调用 XtestRunner 生成报告。

示例代码

import pytest

from XtestRunner import pytest_runner

def test_success():

    """成功的用例"""

    assert 1 + 1 == 2

def test_failure():

    """失败的用例"""

    assert 1 + 1 == 3

def test_error():

    """出错的用例"""

    raise ValueError("自定义错误")

if __name__ == '__main__':

    pytest.main([

        __file__,

        '-s', '-v',  # 显示详细日志

        '--runner=HTMLTestRunner',  # 指定运行器

        '--title=Pytest测试报告',

        '--description=使用pytest框架生成的报告',

        '--tester=测试员',

        '--report=report_pytest.html'  # 报告路径

    ])

四、高级功能配置

1. 嵌入截图(失败用例)

在 Web 自动化测试中,可在断言失败时截图并嵌入报告,需配合 save_screenshot() 方法:

from XtestRunner import HTMLTestRunner

import unittest

from selenium import webdriver  # 以Selenium为例

class TestWeb(unittest.TestCase):

    def setUp(self):

        self.driver = webdriver.Chrome()

    

    def test_screenshot(self):

        self.driver.get("https://www.baidu.com")

        try:

            self.assertEqual(self.driver.title, "错误标题")  # 故意失败

        except AssertionError:

            # 截图并嵌入报告

            self.driver.save_screenshot("screenshot.png")

            self.addFailureScreenshot("screenshot.png")  # 关键方法

            raise  # 抛出异常,确保用例标记为失败

    

    def tearDown(self):

        self.driver.quit()

if __name__ == '__main__':

    suite = unittest.TestLoader().loadTestsFromTestCase(TestWeb)

    with open('web_report.html', 'wb') as f:

        HTMLTestRunner(stream=f, title="Web测试报告").run(suite)

2. 失败重跑

通过 rerun 参数配置失败重跑次数(仅支持 pytest):

pytest.main([

    __file__,

    '--runner=HTMLTestRunner',

    '--report=report_rerun.html',

    '--rerun=2'  # 失败重跑2次

])

3. 发送邮件报告

生成报告后,可通过 Email 类发送邮件:

from XtestRunner import Email

# 配置邮件

email = Email(

    smtp_server="smtp.qq.com",  # 邮件服务器(如QQ邮箱为smtp.qq.com)

    smtp_port=465,  # 端口(SSL加密通常为465)

    smtp_user="your_email@qq.com",  # 发件人邮箱

    smtp_password="your_auth_code",  # 授权码(非密码)

    receiver=["recipient@example.com"],  # 收件人列表

    title="测试报告邮件",  # 邮件标题

    content="请查收测试报告",  # 邮件内容

    file_path="report.html"  # 附件(报告路径)

)

email.send()  # 发送邮件

五、报告解读

生成的 HTML 报告包含以下核心部分:

  • 概览:用例总数、通过 / 失败 / 错误数、通过率、测试时长。
  • 详细结果:每个用例的状态、运行时间、日志(失败用例显示错误堆栈)。
  • 截图区:失败用例的截图(如有配置)。
  • 环境信息:Python 版本、测试框架版本等。

通过以上配置,XtestRunner 可快速生成清晰、专业的测试报告,助力测试结果的分析与展示。更多细节可参考 XtestRunner 官方文档。

http://www.lryc.cn/news/603487.html

相关文章:

  • 系统间复制文档
  • 论文阅读--射频电源在半导体领域的应用
  • React--》实现 PDF 文件的预览操作
  • 配置daemon.json使得 Docker 容器能够使用服务器GPU【验证成功】
  • VitePress学习笔记
  • 彻底清理ArcGIS 10.2残留的步骤
  • Windows使用Powershell自动安装SqlServer2025服务器与SSMS管理工具
  • Vue.js 完全指南:从入门到精通
  • getgff.py脚本-python006
  • openbmc 阈值sensor分析
  • 计算机视觉(CV方向)算法基础
  • SketchUp纹理贴图插件Architextures安装使用图文教程
  • Linux sshfs 安全挂载远程文件系统 命令详解
  • Angular面试题目和答案大全
  • AR辅助前端设计:虚实融合场景下的设备维修指引界面开发实践
  • Mac m系列芯片安装node14版本使用nvm + Rosetta 2
  • YotoR模型:Transformer与YOLO新结合,打造“又快又准”的目标检测模型
  • VUE -- 基础知识讲解(一)
  • 【MySQL】数据库的简单介绍
  • Node.js 内置模块
  • 安卓模拟器 adb Frida hook 抓包
  • uniapp如何封装uni.request 全局使用
  • 自适应双门限的能量检测算法
  • 2025年中科院1区SCI-冬虫夏草优化算法Caterpillar Fungus Optimizer-附Matlab免费代码
  • 09 RK3568 Debian11 ES8388 模拟音频输出
  • 电磁兼容(EMC):整改案例(十三)屏蔽外壳开孔解决433MHz无线通信问题
  • vue3+vite 使用liveplayer加载视频
  • 【学习路线】游戏开发大师之路:从编程基础到独立游戏制作
  • BehaviorTree.Ros2 编译教程
  • java导入pdf(携带动态表格,图片,纯java不需要模板)