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

Allure 集成 pytest

Allure 是一个强大的测试报告工具,与 pytest 集成可以生成详细的测试报告,包括测试步骤、测试数据、截图、错误堆栈等。


1. 安装 Allure 和相关依赖

  1. 安装 pytest-allure-adaptor 插件:

    pip install allure-pytest
    
  2. 确保本地已安装 Allure 工具。如果未安装,可通过以下方式安装:

    • MacOS:
      brew install allure
      
    • Windows/Linux: 下载 Allure 的 官方版本,解压后配置到环境变量中。
  3. 验证安装是否成功:

    allure --version
    

2. pytest 与 Allure 的集成

 1)生成 Allure 报告

确保已经运行了 pytest 测试,并生成了 Allure 数据文件。例如:

pytest --alluredir=./allure-results

这里的 allure-results 目录是 Allure 生成的原始数据文件存储路径。


2) 使用 Allure 命令生成 HTML 报告

运行以下命令,将 allure-results 转换为 HTML 报告:

allure generate ./allure-results -o ./allure-report --clean

  -o ./allure-report 指定生成的 HTML 报告输出目录。

     --clean 会在生成新报告前清除旧的报告内容。

3) 打开生成的 Allure 报告

 

  • 方式 1:通过 Allure 命令直接打开

    运行以下命令,Allure 会启动一个本地服务来展示报告:

    allure open ./allure-report
    

    执行后,浏览器会自动打开 Allure 报告。

    方式 2:手动打开 index.html

  • 进入生成的 Allure 报告目录:

  • cd ./allure-report
    
  • 找到 index.html 文件,用浏览器直接打开:
    • Windows: 双击 index.html 文件。
    • Linux/Mac: 使用浏览器打开,例如:
      firefox index.html
      # 或
      google-chrome index.html
  • Allure 服务启动方式推荐:
    使用 allure open 命令启动本地服务查看报告。这种方式可以动态加载资源,避免直接打开 index.html 时某些功能(如图表、附件)因浏览器安全策略而失效。

  • 防止报错:
    如果直接打开 index.html 时出现资源加载失败的问题(如无法显示图表),建议使用以下命令启动本地 HTTP 服务:

    python -m http.server 8080
    

    然后在浏览器访问:
    http://localhost:8080/allure-report/index.html

 


3. Allure 的常用装饰器

Allure 提供了一系列装饰器,用于标记测试用例的元数据、步骤和测试附加信息。

3.1 测试标题和描述
  • @allure.title
    自定义测试用例标题。

    import allure@allure.title("测试用户登录功能")
    def test_login():assert login("user", "password") == "success"
    
  • @allure.description
    添加测试用例的详细描述。

    @allure.description("验证用户登录接口是否返回正确的结果")
    def test_login():assert login("user", "password") == "success"
    
3.2 测试分类
  • @allure.severity
    标记测试用例的优先级(blocker, critical, normal, minor, trivial)。

    @allure.severity(allure.severity_level.CRITICAL)
    def test_payment():assert process_payment() is True
    
  • @allure.feature
    按功能模块对测试用例进行分组。

    @allure.feature("登录模块")
    def test_login():assert login("user", "password") == "success"
    
  • @allure.story
    标记功能模块中的子功能。

    @allure.feature("登录模块")
    @allure.story("用户使用正确的凭据登录")
    def test_login():assert login("user", "password") == "success"
    
3.3 测试步骤
  • @allure.step
    添加测试步骤,便于报告中展示测试用例执行的流程。
    @allure.step("输入用户名和密码")
    def enter_credentials(username, password):pass@allure.step("点击登录按钮")
    def click_login():passdef test_login():enter_credentials("user", "password")click_login()assert True
    
3.4 附件
  • @allure.attach
    添加测试附件,可以是文本、HTML、图片等。

    @allure.attach("这是一个文本附件", name="文本信息", attachment_type=allure.attachment_type.TEXT)
    def test_attach_text():assert True@allure.attach("<h1>这是一个HTML附件</h1>", name="HTML信息", attachment_type=allure.attachment_type.HTML)
    def test_attach_html():assert True
    
  • 附加图片或日志:

    @allure.attach.file("screenshot.png", name="截图", attachment_type=allure.attachment_type.PNG)
    def test_attach_image():assert True
    

4. 结合案例:完整示例

import allure@allure.feature("支付模块")
@allure.story("支付功能验证")
@allure.severity(allure.severity_level.BLOCKER)
@allure.title("验证用户支付成功")
def test_payment():with allure.step("初始化支付数据"):payment_data = {"amount": 100, "currency": "USD"}allure.attach(str(payment_data), name="支付数据", attachment_type=allure.attachment_type.JSON)with allure.step("执行支付请求"):response = process_payment(payment_data)  # 假设这个是支付函数allure.attach(str(response), name="支付响应", attachment_type=allure.attachment_type.TEXT)with allure.step("校验支付结果"):assert response["status"] == "success", "支付失败"def process_payment(data):# 模拟支付接口响应return {"status": "success", "transaction_id": "12345"}

5. Allure 的核心功能

  1. 多层次分组:

    • 使用 @allure.feature@allure.story 组织测试报告的层级。
  2. 测试用例管理:

    • 自定义标题、描述、标签(如优先级、用例类型)。
  3. 步骤可视化:

    • 通过 @allure.step 展示用例执行的具体过程。
  4. 附件支持:

    • 附加截图、日志、JSON 响应等信息。
  5. 失败快照:

    • 自动捕获失败的堆栈信息。

6. 总结

通过集成 Allure 和 pytest,可以实现清晰直观的测试报告展示。合理利用装饰器和附件功能,能够极大提升测试报告的可读性与信息量,使开发和测试团队更高效地协作与问题定位。

相关文章:

Allure 集成 pytest

Allure 是一个强大的测试报告工具&#xff0c;与 pytest 集成可以生成详细的测试报告&#xff0c;包括测试步骤、测试数据、截图、错误堆栈等。 1. 安装 Allure 和相关依赖 安装 pytest-allure-adaptor 插件&#xff1a; pip install allure-pytest确保本地已安装 Allure 工具。…...

【Python】构建智能语音助手:使用Python实现语音识别与合成的全面指南

随着人工智能技术的迅猛发展&#xff0c;语音助手已成为人们日常生活中不可或缺的一部分。从智能手机到智能家居设备&#xff0c;语音交互提供了便捷高效的人机交互方式。本文旨在全面介绍如何利用Python编程语言及其强大的库——SpeechRecognition和gTTS&#xff0c;构建一个基…...

在 Arthas 中调用 Spring Bean 方法

获取 Spring 应用上下文 使用工具类 如果你的项目中有一个工具类实现了 ApplicationContextAware 接口&#xff0c;如 cn.shutdown.pf.utils.SpringContextUtils&#xff0c;可以使用该类获取 ApplicationContext&#xff1a; Component public final class SpringContextUt…...

Nginx入门笔记

Nginx入门笔记 一、Nginx基本概念二、代理1、正向代理2、反向代理 三、准备工作1、CentOS 7安装nginx&#xff08;1&#xff09;. 安装必要的依赖&#xff08;2&#xff09;下载nginx&#xff08;3&#xff09;编译安装&#xff08;4&#xff09;编译并安装 Nginx(5)启动nginx …...

【单片机】实现一个简单的ADC滤波器

实现一个 ADC的滤波器&#xff0c;PT1 滤波器&#xff08;也称为一阶低通滤波器&#xff09;&#xff0c;用于对输入信号进行滤波处理。 typedef struct PT1FilterSettings PT1FilterSettings; struct PT1FilterSettings {//! last Filter output valueuint32_t filtValOld;//…...

开源 vGPU 方案 HAMi 解析

开源 vGPU 方案 HAMi 一、k8s 环境下 GPU 资源管理的现状与问题 &#xff08;一&#xff09;资源感知与绑定 在 k8s 中&#xff0c;资源与节点紧密绑定。对于 GPU 资源&#xff0c;我们依赖 NVIDIA 提供的 device-plugin 来进行感知&#xff0c;并将其上报到 kube-apiserver…...

备考蓝桥杯:顺序表详解(静态顺序表,vector用法)

目录 1.顺序表的概念 2.静态顺序表的实现 总代码 3.stl库动态顺序表vector 测试代码 1.顺序表的概念 要理解顺序表&#xff0c;我们要先了解一下什么是线性表 线性表是n个具有相同特征的数据元素的序列 这就是一个线性表 a1是表头 a4是表尾 a2是a3的前驱 a3是a2的后继 空…...

OA系统如何做好DDOS防护

OA系统如何做好DDOS防护&#xff1f;在数字化办公蔚然成风的当下&#xff0c;OA&#xff08;办公自动化&#xff09;系统作为企业内部管理与协作的神经中枢&#xff0c;其安全性和稳定性直接关系到企业的日常运营效率、信息流通效率以及长远发展。OA系统不仅承载着企业内部的日…...

使用 Python 的 pyttsx3 库进行文本转语音

1. 什么是 pyttsx3&#xff1f; 1.1 pyttsx3 是一个 Python 库&#xff0c;它可以将文本转换为语音。与其他文本转语音库&#xff08;如 gTTS&#xff09;不同&#xff0c;pyttsx3 不依赖于网络服务&#xff0c;它使用本地的 TTS&#xff08;Text-to-Speech&#xff09;引擎&a…...

如何在Windows上编译OpenCV4.7.0

前言 ​ 参考&#xff1a;Win10 下编译 OpenCV 4.7.0详细全过程&#xff0c;包含xfeatures2d 这里在其基础上还出现了一些问题&#xff0c;仅供参考。 正文 一、环境 1、win10 2、cmake-gui 3、opencv4.7.0 4、VS2019 二、编译过程 1、下载需要的文件&#xff1a; 通…...

【玩转全栈】----Django连接MySQL

阅前先赞&#xff0c;养好习惯&#xff01; 目录 1、ORM框架介绍 选择建议 2、安装mysqlclient 3、创建数据库 4、修改settings&#xff0c;连接数据库 5、对数据库进行操作 创建表 删除表 添加数据 删除数据 修改&#xff08;更新&#xff09;数据&#xff1a; 获取数据 1、OR…...

25/1/4 算法笔记<强化学习> 生成对抗模仿学习

基于生成对抗网络的模仿学习&#xff0c;假设存在一个专家智能体&#xff0c;其策略可以看成最优策略&#xff0c;我们就可以通过直接模仿这个专家在环境中交互的动作数据来训练一个策略&#xff0c;并不需要用到环境提供的奖励信息。 生成对抗模仿学习GAIL实质上就是模仿了专家…...

Flink维表方案选型

Iceberg Iceberg 采用全量预加载数据的方式将维度表数据全部加载到内存中进行关联&#xff0c;虽然可以避免频繁访问外部数据库&#xff0c;但对计算节点的内存消耗很高&#xff0c;不能适用于数量很大的维度表。除此之外&#xff0c;当 Iceberg 维表数据更新后&#xff0c;可…...

Oracle Database 23ai 新特性: UPDATE 和 DELETE 语句的直接联接

Oracle Database 23c 引入了一系列令人振奋的新特性&#xff0c;其中一项尤为引人注目的是对 UPDATE 和 DELETE 语句支持直接联接&#xff08;Direct Join&#xff09;。这一新功能极大地简化了复杂数据操作的实现&#xff0c;提升了性能&#xff0c;并为数据库开发者提供了更强…...

机器学习之随机森林算法实现和特征重要性排名可视化

随机森林算法实现和特征重要性排名可视化 目录 随机森林算法实现和特征重要性排名可视化1 随机森林算法1.1 概念1.2 主要特点1.3 优缺点1.4 步骤1.5 函数及参数1.5.1 函数导入1.5.2 参数 1.6 特征重要性排名 2 实际代码测试 1 随机森林算法 1.1 概念 是一种基于树模型的集成学…...

网络安全图谱以及溯源算法

​ 本文提出了一种网络攻击溯源框架&#xff0c;以及一种网络安全知识图谱&#xff0c;该图由六个部分组成&#xff0c;G <H&#xff0c;V&#xff0c;A&#xff0c;E&#xff0c;L&#xff0c;S&#xff0c;R>。 1|11.知识图 ​ 网络知识图由六个部分组成&#xff0c…...

单片机-外部中断

中断是指 CPU 在处理某一事件 A 时&#xff0c;发生了另一事件 B&#xff0c;请求 CPU 迅速去处理(中断发生)&#xff1b;CPU 暂时停止当前的工作(中断响应)&#xff0c; 转去处理事件 B(中断服务)&#xff1b;待 CPU 将事件 B 处理完毕后&#xff0c;再回到原来事件 A 被中断的…...

《解锁计算机视觉智慧:编程实现图片场景文字描述的开源宝藏》

《解锁计算机视觉智慧&#xff1a;编程实现图片场景文字描述的开源宝藏》 一、MiniGPT-4&#xff1a;小模型撬动大视觉理解&#xff08;一&#xff09;项目概览&#xff08;二&#xff09;核心亮点&#xff08;三&#xff09;上手体验 二、ClipCap-Chinese&#xff1a;中文场景…...

onLoad 生命周期函数是否执行取决于跳转的方式和小程序的页面栈管理机制

文章目录 1. 页面跳转方式2. 你的场景分析3. 页面生命周期4. 总结5. 建议 在微信小程序中&#xff0c;页面跳转时&#xff0c; onLoad 生命周期函数是否执行取决于跳转的方式和小程序的页面栈管理机制。以下是详细说明&#xff1a; 1. 页面跳转方式 微信小程序提供了多种页面…...

Visio 画阀门 符号 : 电动阀的画法

本篇文章介绍阀门&#xff0c;很多朋友在利用Visio绘画管道流程简图时&#xff0c;需要进行阀门符号的绘画&#xff0c;而Visio提供的阀门符号种类并不是很齐全。 本篇文章给出电动阀的画法&#xff1a; 下图是液动阀的符号&#xff1a; 首先&#xff0c;找到“更多形状”中的…...

终极指南:Everything Claude Code JPA模式的AI驱动最佳实践 [特殊字符]

终极指南&#xff1a;Everything Claude Code JPA模式的AI驱动最佳实践 &#x1f680; 【免费下载链接】everything-claude-code The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, …...

CANoe CAPL文件读写保姆级教程:从记录测试数据到读取配置文件

CANoe CAPL文件读写实战指南&#xff1a;从数据记录到动态配置 在汽车电子测试领域&#xff0c;数据记录和参数配置的自动化程度直接影响着测试效率和可靠性。想象这样一个场景&#xff1a;凌晨三点的耐久性测试实验室&#xff0c;测试工程师需要每隔15分钟手动记录一次总线报文…...

深入解析POODLE漏洞:SSL3.0的CBC模式安全隐患与防御策略

1. POODLE漏洞的前世今生 第一次听说POODLE漏洞时&#xff0c;我还以为是什么可爱的狗狗品种。后来才发现&#xff0c;这个听起来萌萌的名字背后&#xff0c;隐藏着一个足以让整个互联网颤抖的安全威胁。POODLE全称Padding Oracle On Downgraded Legacy Encryption&#xff0c;…...

逆向工程趣谈:如何通过残缺的重定位表‘猜’出C代码中的秘密数组名?

逆向工程趣谈&#xff1a;如何通过残缺的重定位表‘猜’出C代码中的秘密数组名&#xff1f; 当你面对一个被故意混淆了符号名的目标文件时&#xff0c;那种感觉就像拿到了一张被墨水涂改过的藏宝图。最近我在分析一个名为phase5.o的目标文件时&#xff0c;就遇到了这样的挑战—…...

官方插件包尚未公开?手把手教你从PyPI预发布通道抢鲜下载Python 2026 AOT编译器,含离线安装包与签名验证脚本

第一章&#xff1a;Python 原生 AOT 编译方案 2026 插件下载与安装Python 原生 AOT&#xff08;Ahead-of-Time&#xff09;编译方案 2026 是 CPython 官方实验性扩展项目&#xff0c;旨在为 Python 提供无需运行时解释器即可生成独立可执行文件的能力。该插件目前以预发布版本形…...

Python数据分析实战:用np.random.normal生成正态分布数据的5个实用场景

Python数据分析实战&#xff1a;用np.random.normal生成正态分布数据的5个实用场景 正态分布作为统计学中最基础也最重要的概率分布之一&#xff0c;在数据分析、机器学习、金融建模等领域无处不在。许多自然现象和人类行为都呈现出正态分布的特征&#xff0c;比如身高、考试成…...

NPC逆变器开环仿真模型:适用于基础研究及多电平模型辨识算法验证,载波层叠调制与多种负载适应性探究

NPC逆变器开环MATLAB仿真模型 开环&#xff01;开环&#xff01;开环&#xff01; 适合基础研究 载波层叠调制、电阻负载 根据情况可以添加阻感负载、LCL滤波等 适合不同多电平模型辨识算法验证、故障诊断等工作&#xff01;最近在搞多电平逆变器的算法验证&#xff0c;发现开环…...

Google 迎来「DeepSeek 时刻」:TurboQuant算法实现bit无损、×加速、×压缩、零预处理诱

从 UI 工程师到 AI 应用架构者 13 年前&#xff0c;我的工作是让按钮在 IE6 上对齐&#xff1b; 13 年后&#xff0c;我用 fetch-event-source 订阅大模型的“思维流”&#xff0c;用 OCR 解锁图片中的文字——前端&#xff0c;正在成为 AI 产品的第一道体验防线。 最近&#x…...

SVA断言实战指南:从基础语法到复杂时序验证

1. SVA断言入门&#xff1a;从基础语法开始 第一次接触SystemVerilog断言(SVA)时&#xff0c;我完全被那些奇怪的符号搞懵了。什么"##"、"|->"、"intersect"&#xff0c;看起来就像天书一样。但当我真正理解了这些符号背后的逻辑后&#xff0…...

绝对能解决IntelliJ IDEA 控制台中文乱码问题!!!

绝对能解决IntelliJ IDEA 控制台中文乱码问题&#xff01;&#xff01;&#xff01; 1 idea 控制台中文乱码idea 运行代码&#xff0c;控制台的中文却是乱码&#xff0c;相信这个是所有 Javaer 都会遇到的问题&#xff0c;但是很惭愧&#xff0c;我工作 7 年才彻底解决这个问题…...