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,可以实现清晰直观的测试报告展示。合理利用装饰器和附件功能,能够极大提升测试报告的可读性与信息量,使开发和测试团队更高效地协作与问题定位。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/503145.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

西门子200smart存储卡作用

最近维修设备时&#xff0c;遇到一个问题&#xff0c;设备PLC是200smart SR20,PLC程序需要修改某个程序段&#xff0c;由于手里没有源程序&#xff0c;联系厂家后&#xff0c;厂家发了一段程序&#xff0c;后缀是.s7s。通过查询官网资料&#xff0c;其中S7_JOB.S7S为脚本任务&a…

QT上实现SVM进行数据分类

针对不了解SVM的原理的同学强推下面这个课程&#xff1a; 6.机器学习课程&#xff08;六&#xff09;支持向量机&#xff08;线性模型&#xff09;问题_哔哩哔哩_bilibili 一、QT实现SVM的方法 1.调用SVM的C语言库&#xff1a;麻烦&#xff0c;要专门去找库&#xff0c;cmak…

【C++】字符串与字符数|组操作详解:strcpy 和 strcat 的使用与解析

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;一、字符串数组的基本操作&#x1f4af;二、strcpy 的用法详解1. strcpy 的功能与原型2. 使用示例与代码演示3. 注意事项4. 扩展&#xff1a;为什么不能直接用 &#xff1f…

GWAS数据和软件下载

这部分主要是数据获取,以及软件配置方法。 一、配套数据和代码 数据和代码目前在不断的更新,最新的教程可以私信,我通过后手动发送最新版的pdf和数据代码。发送的压缩包,有电子版的pdf和数据下载链接,里面是最新的百度网盘的地址,下载到本地即可。然后根据pdf教程,结合配套的…

Vue笔记-001-声明式渲染

https://cn.vuejs.org/tutorial/#step-2https://cn.vuejs.org/tutorial/#step-2 Vue 单文件组件 (Single-File Component&#xff0c;缩写为 SFC) 单文件组件是一种可复用的代码组织形式&#xff0c;它将从属于同一个组件的 HTML、CSS 和 JavaScript 封装在使用 .vue 后缀的文件…

Scala_【5】函数式编程

第五章 函数式编程函数和方法的区别函数声明函数参数可变参数参数默认值 函数至简原则匿名函数高阶函数函数作为值传递函数作为参数传递函数作为返回值 函数闭包&柯里化函数递归控制抽象惰性函数友情链接 函数式编程 面向对象编程 解决问题时&#xff0c;分解对象&#xff…

(六)优化 ChatGPT 交互:任务式 Prompt 的力量

&#x1f4e2;&#x1f4e2;&#x1f4e2; 大家好&#xff0c;我是云楼Yunlord&#xff0c;CSDN博客之星人工智能领域前三名&#xff0c;多年人工智能学习工作经验&#xff0c;一位兴趣稀奇古怪的【人工智能领域博主】&#xff01;&#xff01;&#xff01;&#x1f61c;&#…

HarmonyOS-面试资料

1. HarmonyOS-面试资料 1.1. HarmonyOS 优点、特点 1.1.1. 优点 &#xff08;1&#xff09;在国家方面&#xff0c;是国产的系统&#xff0c;受国家支持不会有限制的情况。   &#xff08;2&#xff09;设备互连18N(1:手机 8&#xff1a;平板、PC、vr设备、可穿戴设备、智慧…

R语言基础| 中级绘图

写在前面 前面第六章的图形主要是展示单分类变量或连续型变量的分布情况。本章主要研究二元变量或多元变量关系的可视化。更多教程可参考&#xff1a; R语言基础学习手册 图片集锦&#xff1a; 11.1 散点图 1&#xff09;添加最佳拟合曲线的散点图&#xff1a; 绘制汽车重…

神经网络第一课

目录 背景知识生物神经元人工神经元模型神经网络训练神经网络结论背景知识 神经网络是一种人工智能模型,其主要受生物神经系统启发,重现了大脑中神经元之间相互连接的方式。 神经网络已在很多领域中取得显著成就,如图像识别、自然语言处理和语音识别等。 生物神经元 神经…

Docker:安装 XXL-JOB 分布式调度任务的技术指南

1、简述 XXL-JOB 是一个分布式任务调度平台&#xff0c;提供简单易用的任务调度功能。它支持分布式调度、失败重试、任务监控和报警等功能。XXL-JOB 采用了服务端与执行器的架构&#xff0c;任务调度在服务端进行&#xff0c;而任务的实际执行则由各个执行器完成。 XXL-JOB 的…

Git revert回滚

回退中间的某次提交&#xff08;此操作在预生产分支上比较常见&#xff09;&#xff0c;建议此方式使用命令进行操作&#xff08;做好注释&#xff0c;方便后续上线可以找到这个操作&#xff09; Git操作&#xff1a; 命令&#xff1a;revert -n 版本号 1&#xff1a;git re…

新年到了!使用Python创建一个简易的接金元宝游戏

引言 在本教程中&#xff0c;我们将一起学习如何使用Python编程语言和Pygame库来创建一个简单的休闲游戏——“接金元宝”。 准备工作 首先&#xff0c;确保你的计算机上已经安装了Python&#xff08;推荐3.6以上版本&#xff09;和Pygame库。如果还没有安装Pygame&#xff0…

GoF23种设计模式 简介

文章目录 面向对象(OO)设计原则&#xff08;7&#xff09;单一职责原则开闭原则里氏代换原则依赖倒转原则接口隔离原则合成复用原则迪米特法则 创建型模式 &#xff08;5&#xff09;工厂方法模式 &#xff08;类模式&#xff0c;其余都是对象模式&#xff09;抽象工厂模式建造…

【数电尾灯设计】2022-8-16

缘由数电尾灯设计问题&#xff0c;求解答--CSDN问答 从题目可以列出 000 100 010 111-----------4进制 000 100 010 110 001 101 011 111-----------8进制 由列出可知用16进制芯片的3个引脚可以获得8进制推导出4进制从而可用逻辑处理为4进制实现尾灯功能。之上第一步实现了尾灯…

在线机考|2024华为实习秋招春招编程题(最新)——第3题_个性化歌单推荐系统_300分(十一)

题目内容 假设你是音乐服务的开发者,为了提高用户体验需要解决推荐歌单的同质化问题,保证推荐给用户的所有歌单不包含相同歌曲的。给定一个包含N个歌单和M条歌单重复记录,每个歌单用一个从1到N的整数编号,歌单重复记录包含两个歌单的ID,表示两个歌单有相同的歌曲。 你的任…

Ant Design Pro写项目的总结经验(react)

配置代理&#xff08;proxy&#xff09; 在config文件夹下面的config.ts里面配置修改 修改前&#xff1a;修改后&#xff1a; 修改账号框以及登录接口以及登录返回的code 由于它的账号框是username,但是我们接口请求要填写的是account&#xff0c;因此可以全局搜索进行替换…

安卓14无法安装应用解决历程

客户手机基本情况&#xff1a; 安卓14&#xff0c;对应的 targetSdkVersion 34 前天遇到了安卓14适配问题&#xff0c;客户发来的截图是这样的 描述&#xff1a;无法安装我们公司的B应用。 型号&#xff1a;三星google美版 解决步骤&#xff1a; 1、寻找其他安卓14手机测试…

51单片机(二)中断系统与外部中断实验

中断即单片机因为某些原因E暂定现在的工作P0&#xff0c;转去做其他的工作P1&#xff0c;完了之后继续之前的事P0&#xff0c;其他工作P1就是中断程序&#xff0c;原因E就是中断事件&#xff0c;原因由外部发生&#xff0c;程序不能预测到的是硬中断&#xff0c;可以由程度触发…

66.基于SpringBoot + Vue实现的前后端分离-律师事务所案件管理系统(项目 + 论文)

项目介绍 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装律师事务所案件管理系统软件来发挥其高效地信息处理的作用…