pytest框架 - 第二集 allure报告

news2025/5/19 12:25:08

一、断言assert

二、Pytest 结合 allure-pytest 插件生成美观的 Allure 报告

(1) 安装 allure 环境
  1. 安装 allure-pytest 插件:pip install allure-pytest
  2. 在 github 下载 allure 报告文件
    • 地址:Releases · allure-framework/allure2 · GitHub
    • 下载:allure-2.21.0.zip
    • 配置 path 环境变量(不能有中文):D:\allure-2.21.0\bin
  3. 重启 Pycharm 并验证是否安装成功
    在 dos 和 pycharm 中输入:allure --version 能看到版本号说明 OK
(2) 生成 allure 报告
  • 生成临时的 json 报告
    addopts = -vs --alluredir=temps --clean-alluredir (ini)

  • 解释:
  • --alluredir=temps 生成临时的 json 报告
  • --clean-alluredir 每一次运行清空临时的 json 报告

  • 根据 json 报告生成 html 的 allure 报告
if __name__ == '__main__':
    pytest.main()
    time.sleep(3)
    os.system("allure generate./temps -o./reports --clean")

./temps 临时 json 报告文件夹
-o output 输出
./reports allure 报告的路径
--clean 每一次运行清空 allure 报告

上面这个运行起来有问题 故优化代码为:

就是把ini的设定放到run里面

(3) 企业级 allure 报告定制

1. 企业 LOGO 定制

更改 D:\allure-2.21.0\config 目录下的 allure.yml 配置文件,加入自定义 logo

yaml

plugins:
  - junit-xml-plugin
  - xunit-xml-plugin
  - trx-plugin
  - behaviors-plugin
  - packages-plugin
  - screen-diff-plugin
  - xctest-plugin
  - jira-plugin
  - xray-plugin
  - custom-logo-plugin

2. 更改图标

在 D:\allure-2.21.0 - 测试 \plugins\custom-logo-plugin\static 目录下加入 logo 图片

3. 更改样式

在 D:\allure-2.21.0 - 测试 \plugins\custom-logo-plugin\static 目录下修改 style.css 的样式

css

/*
.side-nav__brand {
  background: url('logo.png') no-repeat left center!important;
  margin-left: 10px;
}
*/

.side-nav__brand{
        background: url('logo.png') no-repeat left center!important;
        margin-left: 22px;
        height: 90px;
        background-size: contain!important;
}

.side-nav__brand-text{
        display: none;
}

最后根据margin-left: 22px;height: 90px;样式调整 logo 大小和位置。

2. 项目结构的报告定制

报告左边的定制
@allure.epic("项目名称:码尚教育金融项目接口自动化报告")
@allure.feature("模块名称:用户管理模块")
class TestApi:
    @allure.story("接口名称:登陆接口")
    #@allure.title("验证登陆接口成功返回数据")
    def test_login(self):
        print("登陆测试用例")
        allure.dynamic.title("接口登陆成功")
        assert "a" in "abc"

报告右边的定制

优先级:BLOCKER(致命),CRITICAL(严重),NORMAL(一般),MINOR(提示),TRIVIAL(轻微)

@allure.epic("项目名称: 金融项目接口自动化报告")
@allure.feature("模块名称: 用户管理模块")
class TestApi:
    @allure.story("接口名称: 登陆接口")
    #@allure.title("验证登陆接口成功返回数据")
    @allure.severity(allure.severity_level.BLOCKER)
    def test_login(self):
        print("登陆测试用例")
        allure.dynamic.title("接口登陆成功")
        assert "a" in "abc"

    @allure.story("接口名称: 登陆接口")
    @allure.title("验证登陆失败")
    def test_login2(self):
        print("登陆测试用例")
        assert "a" in "abc"

    def test_register(self):
        print("注册测试用例")
    

装饰器部分

@allure.epic("项目名称:金融项目接口自动化报告")

allure.epic 装饰器用于定义测试用例所属的史诗级(项目级)别的标题,这里指定了项目名称为 “金融项目接口自动化报告” ,在 Allure 报告中会以项目维度进行展示,方便从宏观层面归类测试用例。

@allure.feature("模块名称:用户管理模块")

allure.feature 装饰器用来标识测试用例所属的功能模块,这里表明这些测试用例属于 “用户管理模块” ,可以将同一功能模块下的测试用例聚合展示在 Allure 报告中。

@allure.story("接口名称:登陆接口")

allure.story 装饰器用于进一步细化测试用例所属的用户故事,这里表示测试用例围绕 “登陆接口” 展开,可帮助在报告中按不同接口维度组织测试用例。

@allure.title("验证登陆失败")

allure.title 装饰器用于指定测试用例在 Allure 报告中显示的标题。在test_login2方法上使用,意味着该测试用例在报告中展示的标题为 “验证登陆失败” ,可使报告中的用例标题更清晰易读。

@allure.severity(allure.severity_level.BLOCKER)

allure.severity 装饰器用于设置测试用例的严重级别,这里设置为allure.severity_level.BLOCKER(致命级别),表示这个测试用例对应的问题如果失败,会严重影响系统功能,导致系统无法正常使用。在 Allure 报告中会根据严重级别对测试用例进行分类展示和统计。

  • @allure.link(url="http://www.baidu.com",name="接口访问链接") :在 Allure 报告中添加一个指向指定网址的链接,名称为 “接口访问链接”,方便查看与接口相关的外部资源。
  • @allure.issue(url="http://www.baidu.com",name="bug链接") :在报告中添加指向 bug 跟踪系统等的链接,名称为 “bug 链接”,用于关联该测试用例可能存在的问题记录。
  • @allure.testcase(url="http://www.baidu.com",name="测试用例链接") :在报告中添加指向测试用例详细文档等的链接,名称为 “测试用例链接”,方便追溯测试用例的设计和详细说明。

 

allure.attach() 是 Allure 框架提供的一个核心方法,用于在测试报告中添加额外的附件(如截图、日志、请求响应数据等),丰富测试结果的可视化信息。这些附件会显示在测试报告的详情页中,帮助测试人员更直观地定位问题。

核心功能

  1. 添加附件到测试报告
    可以将各种类型的文件或数据(如图片、文本、JSON、XML 等)作为附件嵌入到 Allure 报告中。

  2. 支持多种附件类型
    通过 attachment_type 参数指定附件类型,常见类型包括:

    • allure.attachment_type.PNG/JPEG:图片
    • allure.attachment_type.TEXT:文本
    • allure.attachment_type.JSON:JSON 数据
    • allure.attachment_type.HTML:HTML 片段
    • allure.attachment_type.XML:XML 数据

方法参数

allure.attach(
    body: Union[str, bytes],         # 附件内容(字符串或字节流)
    name: str = None,                # 附件名称(显示在报告中)
    attachment_type: allure.attachment_type = None,  # 附件类型
    extension: str = None            # 附件扩展名(可选)
)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pycharm连接github(详细步骤)

【前提:菜鸟学习的记录过程,如果有不足之处,还请各位大佬大神们指教(感谢)】 1.先安装git 没有安装git的小伙伴,看上一篇安装git的文章。 安装git,2.49.0版本-CSDN博客 打开cmd(…

oracle linux 95 升级openssh 10 和openssl 3.5 过程记录

1. 安装操作系统,注意如果可以选择,选择安装开发工具,主要是后续需要编译安装,需要gcc 编译工具。 2. 安装操作系统后,检查zlib 、zlib-dev是否安装,如果没有,可以使用安装镜像做本地源安装&a…

Text models —— BERT,RoBERTa, BERTweet,LLama

BERT 什么是BERT? BERT,全称Bidirectional Encoder Representations from Transformers,BERT是基于Transformer的Encoder(编码器)结构得来的,因此核心与Transformer一致,都是注意力机制。这种…

【AGI】大模型微调数据集准备

【AGI】大模型微调数据集准备 (1)模型内置特殊字符及提示词模板(2)带有系统提示和Function calling微调数据集格式(3)带有思考过程的微调数据集结构(4)Qwen3混合推理模型构造微调数据…

新能源汽车制动系统建模全解析——从理论到工程应用

《纯电动轻卡制动系统建模全解析:车速-阻力拟合、刹车力模型与旋转质量转换系数优化》 摘要 本文以纯电动轻卡为研究对象,系统解析制动系统建模核心参数优化方法,涵盖: 车速-阻力曲线拟合(MATLAB实现与模型验证&…

【Bluedroid】蓝牙HID DEVICE 报告发送与电源管理源码解析

本文基于Android蓝牙协议栈代码,深度解析HID设备(如键盘、鼠标)从应用层发送输入报告到主机设备的完整流程,涵盖数据封装、通道选择、L2CAP传输、电源管理四大核心模块。通过函数调用链(send_report → BTA_HdSendRepo…

第9章 组件及事件处理

9.1 Java Swing概述 图像用户界面(GUI) java.awt包,即Java抽象窗口工具包,Button(按钮)、TextField(文本框)、List(列表) javax.swing包 容器类&#xff08…

用golang实现二叉搜索树(BST)

目录 一、概念、性质二、二叉搜索树的实现1. 结构2. 查找3. 插入4. 删除5. 中序遍历 中序前驱/后继结点 一、概念、性质 二叉搜索树(Binary Search Tree),简写BST,又称为二叉查找树 它满足: 空树是一颗二叉搜索树对…

服务器防文件上传手写waf

一、waf的目录结构,根据自己目录情况进行修改 二、创建文件夹以及文件 sudo mkdir -p /www/server/waf-monitor sudo mkdir -p /www/server/waf-monitor/quarantine #创建文件夹 chmod 755 /www/server/waf-monitor #赋权cd /www/server/waf-monitor/touch waf-m…

计算机的基本组成与性能

1. 冯诺依曼体系结构:计算机组成的金字塔 1.1. 计算机的基本硬件组成 1.CPU - 中央处理器(Central Processing Unit)。 2.内存(Memory)。 3.主板(Motherboard)。主板的芯片组(Ch…

linux下编写shell脚本一键编译源码

0 前言 进行linux应用层编程时,经常会使用重复的命令对源码进行编译,然后把编译生成的可执行文件拷贝到工作目录,操作非常繁琐且容易出错。本文编写一个简单的shell脚本一键编译源码。 1 linux下编写shell脚本一键编译源码 shell脚本如下&…

【深度学习】#12 计算机视觉

主要参考学习资料: 《动手学深度学习》阿斯顿张 等 著 【动手学深度学习 PyTorch版】哔哩哔哩跟李沐学AI 目录 目标检测锚框交并比(IoU)锚框标注真实边界框分配偏移量计算损失函数 非极大值抑制预测 多尺度目标检测单发多框检测(S…

Baklib赋能企业知识资产AI化升级

AI驱动知识管理革新 在数字化转型浪潮中,企业知识管理的范式正经历AI技术的深度重构。传统知识库受限于静态存储与人工维护,而Baklib通过构建知识中台架构,将多模态数据处理与语义理解引擎深度融合,实现知识资产的动态聚合与智能…

【C++】模板上(泛型编程) —— 函数模板与类模板

文章目录 一、啥是泛型编程二、函数模板2.1、函数模板的概念2.2、函数模板的格式2.3、函数模板的原理2.4、函数模板的实例化2.4.1、隐式实例化&#xff1a;让编译器根据实参推演模板参数的实际类型2.4.2、显示实例化&#xff1a;在函数名后的<>中指定模板参数的实际类型 …

【大模型系列】logprobs(对数概率)参数

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

C语言内存函数与数据在内存中的存储

一、c语言内存函数 1、memcpy函数是一个标准库函数&#xff0c;用于内存复制。功能上是用来将一块内存中的内容复制到另一块内存中。用户需要提供目标地址、源地址以及要复制的字节数。例如结构体之间的复制。 memcpy函数的原型是&#xff1a;void* memcpy&#xff08;void* …

通过MCP让LLM调用系统接口

场景 MCP的出现大大丰富了LLM的功能&#xff0c;对于存量系统&#xff0c;我们希望能让模型调用已有的接口&#xff0c;以最小的成本让AI能够获取系统内部数据。因此我们开发了一个名为http-api-call的MCP Server&#xff0c;来支持模型到内部API的调用 实现方案 使用用标准…

【刚下赛场!】2025年江西省电子专题赛 - 现场制作:简易数控直流电流源原题

一、题目要求 二、赛场注意事项 1、一定要用铜柱将板子升起来&#xff0c;不然我们剪下来的引脚在测试的时候放在桌子上非常容易导致我们的板子短路&#xff08;记得把铜柱卸下来再上交作品&#xff0c;不然会被认为是做标记判0分&#xff09;&#xff1b; 2、发下来器件之后…

材料×工艺×AI:猎板PCB重构汽车电子四层板技术逻辑

一、汽车电子四层板的三大核心挑战 1. 极端环境下的可靠性保障 汽车电子需在-40℃至150℃的剧烈温变、高湿振动等环境中稳定运行。例如&#xff0c;电池管理系统&#xff08;BMS&#xff09;要求PCB在高温下阻抗漂移率低于8%&#xff0c;且镀层需具备抗腐蚀能力。猎板PCB通…

MCP(一)——QuickStart

目录 1. MCP简介2. MCP的优势3. MCP核心4. QuickStart For Server Developers(仅具参考)4.1 MCP核心概念4.2 构建MCP服务器的代码4.2.1 设置MCP服务器实例4.2.2 辅助函数4.2.3 实现工具执行4.2.4 在Cherry-Studio中添加MCP服务器4.2.5 演示4.2.5.1 测试工具get_alerts4.2.5.2 测…