allure生成测试报告(搭配Pytest、allure-pytest)
文章目录
- 前言
- allure简介
- allure安装
- 软件下载
- 安装
- 配置环境变量
- 安装成功验证
- allure运行流程
- allure装饰器函数
- 基本说明
- 装饰器函数
- 使用
- allure.attach
- 命令行运行
- 利用allure-pytest生成中间结果json
- 查看测试报告
- 总览页面
- 每个tab页的说明
- 类别页面
- 测试套
- 图表页面
- 时间刻度
- 功能页面
- 包
- 参考目录
前言
阅读本文前请注意最后编辑时间,文章内容可能与目前最新的技术发展情况相去甚远。欢迎各位评论与私信,指出错误或是进行交流等。
allure简介
官方文档地址:https://allurereport.org/docs/
- 它是一个生成HTML测试报告的工具包
- 使用java开发,需要java环境
- 功能强大 , 生成的报告美观、直观
allure安装
软件下载
想更好地使用allure,可以安装如下软件 :
安装软件 | 用途 | 链接地址 |
---|---|---|
java | allure使用java开发,所以必须要有运行环境 | https://www.oracle.com/cn/java/technologies/downloads/ |
allure | 生成测试报告 | https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/ |
python | 编写测试用例等所需语言 | https://www.python.org/ |
pycharm | 开发工具IDE | https://www.jetbrains.com/pycharm/download/?section=windows |
pytest | python测试框架 | pip install pytest |
allure-pytest | pytest的插件 让allure和pytest配合 | pip install allure-pytest |
安装
- allure无需安装,直接解压到一个指定的路径下即可
- java、python、pycharm的安装教程请各位自行搜索资料
- 在安装完python后,pytest只需要在cmd命令中运行pip install pytest即可自动安装 。
- 在安装完pytest后,只需要在cmd命令中运行pip install allure-pytest即可自动安装 。
配置环境变量
Java、python、allure都需要进行环境变量配置,Java、python的环境变量配置请各位自行搜索资料。
allure环境配置
此电脑-鼠标右击-属性-高级系统设置-环境变量-系统变量下的Path-新建-添加allure环境变量(填写 allure 解压的路径),具体如下:
安装成功验证
除了pycharm无需验证外,其它的都可以输入命令进行验证,打开cmd窗口输入以下命令进行验证:
# 1. java验证 :
java --version
# 2. python验证 :
python -V
# 3. allure验证
allure --version
# 4. pytest验证
pip show pytest
allure运行流程
allure运行流程主要分为以上的三步:
- 在编写好的测试用例中添加allure装饰器
- 在cmd处,运行allure命令 添加所需参数 ,它就会生成测试报告
- 通过浏览器查看生成的测试报告
allure装饰器函数
基本说明
# 作用:用于将测试用例的数据展示到测试报告中
# 导入:import allure
# 说明 : 1.需要将这些装饰器函数添加在测试方法或测试类的开头。2.同一个类或者一个方法可以添加多个装饰器函数
装饰器函数
函数 | 说明 |
---|---|
@allure.epic() | 项目名称 |
@allure.feature() | 模块名称 |
@allure.story() | 子模块 |
@allure.title(用例标题) | 用例标题 |
@allure.severity() | 用例等级 包括:blocker,critical,normal,minor,trivial |
@allure.step() | 测试步骤 |
@allure.description() | 测试用例描述 例:可以写预期结果 |
@allure.testcase(url) | 测试用例链接 |
@allure.issue(url) | 测试bug链接 |
@allure.link(url) | 链接到被测系统地址 |
@allure.attachment() | 附件 可以添加截图或者日志 |
以上的装饰器其实就是对应测试用例模板中的一些字段 ,具体如下 :
使用
allure.attach
allure.attach(body, name, attachment_type, extension)
作用:在测试报告中生成指定内容、名称、类型的附件,可以补充测试数据、测试结果截图等;
参数列表
- body:要显示的内容(附件),也可以理解为写入附件的内容
- name:附件名字
- attachment_type:附件类型,是 allure.attachment_type 里面的其中一种
- extension:附件的扩展名(比较少用)
allure.attachment_type提供的附件类型 如下所示
另外一种方式 allure.attach.file(source, name=None, attachment_type=None, extension=None)
作用:向测试用例中上传附件
参数说明:source为文件路径,其他参数与allure.attach()参数一致。
在UI自动化测试中,会经常用到这个方法来上传用例执行的截图。
示例
import allure
import pytest
import requests
import jsondata = [("lilei", "123456"), ("hanmeimei", "888888"), ("xiaoming", "111111")]
ids = ["username:{}-password:{}".format(username, password) for username, password in data]@allure.epic("xx在线购物平台接口测试")
@allure.feature("登录模块")
class TestLogin:@allure.story("用户登录")@allure.title("登录")@pytest.mark.parametrize("username, password", data, ids=ids)def test_login(self, username, password):headers = {"Content-Type": "application/json;charset=utf8"}url = "http://127.0.0.1:5000/login"_data = {"username": username,"password": password}allure.attach(body="用户名-{},密码-{}".format(username, password),name="登录参数",attachment_type=allure.attachment_type.TEXT)res = requests.post(url=url, headers=headers, json=_data).textres = json.loads(res)assert res['code'] == 1000@allure.story("用户退出登录")@allure.title("退出登录")def test_logout(self):'''这条测试用例仅仅只是为了举例说明allure.attach.file的使用'''print("退出登录,并截图")# 截图路径testcase_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))source_path = testcase_path + "/screenshot/logout.jpg"allure.attach.file(source=source_path,name="退出登录后截图",attachment_type=allure.attachment_type.JPG)assert True
测试报告结果展示如下:
allure.attach()结果:
allure.attach.file()结果:
将以上的装饰器整理后就是如下的结构 ,按照此结构可以整理出你的测试用例 。
注意:
- 每一个装饰器都是可选项,可加可不加 。比如你把feature去掉了,那么在报告中就不展示这一层级了 ,其它也是如此。
- epic、feature、story、title主要用来显示层级 ,而到了title层里,就是显示具体的内容 ,内容包括severity,description,testcase ,issue,link,step等
- 除了step和attachment比较特殊以外,它们都是放在方法内使用 ,其它的都是标注在测试方法的开头或者类的开头 。
根据层级结构,在项目中该怎么组织我们的测试用例呢 ?一般就是按照项目结构一层一层的组织下来 ,比如 :(仅作参考)
命令行运行
allure命令行参数,可以打开cmd窗口输入以下命令查看帮助
allure --help
帮助信息:
Usage: allure [options] [command] [command options]Options:--helpPrint commandline help.-q, --quietSwitch on the quiet mode.Default: false-v, --verboseSwitch on the verbose mode.Default: false--versionPrint commandline version.Default: falseCommands:generate Generate the reportUsage: generate [options] The directories with allure resultsOptions:-c, --cleanClean Allure report directory before generating a new one.Default: false--configAllure commandline config path. If specified overrides values from--profile and --configDirectory.--configDirectoryAllure commandline configurations directory. By default usesALLURE_HOME directory.--profileAllure commandline configuration profile.-o, --report-dir, --outputThe directory to generate Allure report into.Default: allure-report
serve Serve the reportUsage: serve [options] The directories with allure resultsOptions:--configAllure commandline config path. If specified overrides values from--profile and --configDirectory.--configDirectoryAllure commandline configurations directory. By default usesALLURE_HOME directory.-h, --hostThis host will be used to start web server for the report.-p, --portThis port will be used to start web server for the report.Default: 0--profileAllure commandline configuration profile.
open Open generated reportUsage: open [options] The report directoryOptions:-h, --hostThis host will be used to start web server for the report.-p, --portThis port will be used to start web server for the report.Default: 0
plugin Generate the reportUsage: plugin [options]Options:--configAllure commandline config path. If specified overrides values from--profile and --configDirectory.--configDirectoryAllure commandline configurations directory. By default usesALLURE_HOME directory.--profileAllure commandline configuration profile.
具体格式如下:
allure格式: allure [options] [command] [command options]
第一部分是[options],这里我们不做介绍。
主要着眼于[command]中的 generate 以及其[command options]
Usage: generate [options] The directories with allure resultsOptions:-c, --cleanClean Allure report directory before generating a new one.Default: false--configAllure commandline config path. If specified overrides values from--profile and --configDirectory.--configDirectoryAllure commandline configurations directory. By default usesALLURE_HOME directory.--profileAllure commandline configuration profile.-o, --report-dir, --outputThe directory to generate Allure report into.Default: allure-report
主要使用的两个[command options] :
-c : 每次生成报告前清除之前生成的报告文件 ,不加此选项则默认为不清除 。
-o : 生成报告的路径 ,也就是你要将测试报告输出到哪里 。
最终可以在cmd窗口运行如下命令:
allure generate JSON路径 -o 生成测试报告路径 -c
这里有一个JSON路径,这个需要通过pytest生成一堆json文件,存放这堆JSON文件的这个路径就是JSON路径。
随后allure将这些Pytest生成的中间结果json,转换成测试报告。
利用allure-pytest生成中间结果json
在安装了allure-pytest之后,我们可以通过配置 pytest.ini 全局配置文件,
或者是利用命令行运行,添加上下方对应的参数。使得pytest生成中间结果json。
# --alluredir=./temps:设置allure生成临时的json格式的报告存放的路径(相对于 pytest 命令所在目录的测试报告目录)
# --clean-alluredir:清空上一次运行的记录addopts = -vs --alluredir=./temps --clean-alluredir
命令执行完后,会在目录下生成一些中间结果json文件:
随后使用allue命令
import os
import pytest
# ./temps 是中间结果json的存放目录
if __name__ == '__main__':pytest.main()# 调用allure生成报告os.system("allure generate ./temps -o ./report --clean")
查看测试报告
总览页面
生成的报告就是如下的情况 :默认在总览页面
每个tab页的说明
类别页面
所谓类别,就是按照不同用例的运行结果划分的一个分类 ,具体包括 :
- 报错的用例
- 运行失败的用例
- 运行成功的用例
- 跳过的用例
- 未知的用例
测试套
这里的测试套,并不是测试套件 ,它只是按照你项目测试用例的层级一层一层的组织展示的。比如代码层级为:
cases:test_login.pytest_buy_flow.pytest_reg.py# test_login.py中的代码为:
class TestLogin():pass# test_buy_flow.py中的代码为:
class TestBuyFlow():pass# test_reg.py中的代码为
class TestReg():pass
以上的用例组织结构就变为下图的展示方式了 。
图表页面
这个就是按照不同的维度进行了数据统计,包括:用例状态、优先级、耗时等。
时间刻度
主要统计各个用例的运行时间 ,比如想知道那些用例运行花费的时间长,看这个数据就可以知道 。
功能页面
allure的装饰器函数 ,分别给每个用例都做了标记 ,那么所标记的结果就是从功能里查看 ,具体如下:
包
此功能忽略中间层级 ,只展示测试方法,即测试用例 ,对于看测试具体结果来说更加直观。
参考目录
https://www.bilibili.com/video/BV1yg411o7EV
https://www.bilibili.com/video/BV1gB4y1v7Ki
https://www.bilibili.com/video/BV15F4m1w7Wg
https://www.bilibili.com/video/BV1zS4y167RY
https://www.bilibili.com/video/BV1Uk4y1Y7pA
https://blog.csdn.net/venustech0919/article/details/133852086
https://blog.csdn.net/weixin_44904239/article/details/135647536
https://blog.csdn.net/qq_53071851/article/details/131013824
https://blog.csdn.net/u012111923/article/details/133147327
https://blog.csdn.net/hlsxjh/article/details/144191616
https://blog.csdn.net/YZL40514131/article/details/129109202
https://blog.csdn.net/liuchunming033/article/details/79624474
https://blog.csdn.net/HUA6911/article/details/136911347
https://blog.csdn.net/qq_41221411/article/details/142727220
https://blog.csdn.net/hlsxjh/article/details/136584525
相关文章:

allure生成测试报告(搭配Pytest、allure-pytest)
文章目录 前言allure简介allure安装软件下载安装配置环境变量安装成功验证 allure运行流程allure装饰器函数基本说明装饰器函数使用allure.attach 命令行运行利用allure-pytest生成中间结果json 查看测试报告总览页面每个tab页的说明类别页面测试套图表页面时间刻度功能页面包 …...

龙虎榜——20250509
上证指数今天缩量,整体跌多涨少,走势处于日线短期的高位~ 深证指数今天缩量小级别震荡,大盘股表现更好~ 2025年5月9日龙虎榜行业方向分析 一、核心行业方向 军工航天 • 代表个股:航天南湖、天箭科技、襄阳轴承。 • 驱动逻辑…...

操作系统的初步了解
目录 引言:什么是操作系统? 一、设计操作系统的目的 二、操作系统是做什么的: 操作系统主要有四大核心任务: 1. 管理硬件 2. 运行软件 3. 存储数据 4. 提供用户界面 如何理解操作系统的管理呢? 1. 什么是操作…...
拆分sql数据,(shop_backup)sql文档过大(>5G)
执行表结构 sed -n /^-- Table structure/,/^-- Dumping data/p shop_backup.sql > structure.sql mysql -u root -p shop < structure.sql 执行数据 awk /^INSERT INTO/{if(count%1000001) {file"data_part_"i".sql"}; print > file} shop_bac…...

软件工程之软件项目管理深度解析
前文基础: 1.软件工程学概述:软件工程学概述-CSDN博客 2.软件过程深度解析:软件过程深度解析-CSDN博客 3.软件工程之需求分析涉及的图与工具:软件工程之需求分析涉及的图与工具-CSDN博客 4.软件工程之形式化说明技术深度解…...

基于Boost库、Jsoncpp、cppjieba、cpp-httplib等构建Boost搜索引擎
⭐️个人主页:小羊 ⭐️所属专栏:项目 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 项目背景技术栈和项目环境正排索引和倒排索引数据去标签与清洗下载数据源去标签 建立索引构建正排索引构建倒排索引 建立搜索引擎h…...

Qt 通过控件按钮实现hello world + 命名规范(7)
文章目录 使用编辑框来完成 hello world通过编辑图形化界面方式通过纯代码方式 通过按钮的方式来创建 hello world通过编辑图形化界面方式通过纯代码方式 总结Qt Creator中的快捷键如何使用文档命名规范 简介:这篇文章着重点并不在于创建hello world程序,…...
JAVA继承中变量和方法的存储和方法中访问变量的顺序
一、变量归属与内存位置 static 变量:属于类,只存在一份,保存在方法区(或元空间)。 实例变量(非static):属于对象,每个对象单独一份,保存在堆内存中。 二、…...

关于大数据的基础知识(二)——国内大数据产业链分布结构
成长路上不孤单😊😊😊😊😊😊 【14后😊///计算机爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于大数据的基础知识(二&a…...
【Python 字典(Dictionary)】
Python 中的字典(Dictionary)是最强大的键值对(key-value)数据结构,用于高效存储和访问数据。以下是字典的核心知识点: 一、基础特性 键值对存储:通过唯一键(Key)快速访…...
Linux 内核中的 security_sk_free:安全模块与 Socket 释放机制解析
引言 在 Linux 内核中,网络通信和进程间交互(IPC)的核心数据结构之一是 struct sock(即 socket)。其生命周期管理涉及复杂的资源分配与释放逻辑。本文聚焦于 security_sk_free 这一函数,探讨其作用、调用场景以及与安全模块的交互机制,并解答一个常见疑问:在单机间 TC…...
VBA -- 学习Day4
数组 创建数组: Dim 数组名(数组元素上下角标)[As 元素类型] eg. Dim MyArray (1 To 3) As Integer 注意:1.如果不指定元素类型,则是Variant类型 向数组赋值: eg. MyArray(1) 100 MyArray(2) 200…...

Winform(11.案例讲解1)
今天写两个案例,用于更好的理解控件的使用 在写之前先写一个类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _1.案例讲解 { internal class Student { public string …...

电机密集型工厂环境下的无线通信技术选型与优化策略
点击下面图片带您领略全新的嵌入式学习路线 🔥爆款热榜 88万阅读 1.6万收藏 在电机、变频器、电焊机等强电磁干扰源遍布的工业环境中,无线通信系统的可靠性面临严峻挑战。本文从抗干扰能力、传输稳定性、实时性需求三大核心维度出发,结合工…...
Web 自动化之 HTML JavaScript 详解
文章目录 一、HTML 常用标签二、javascript 脚本1、什么是 javascript(js)2、 js变量和函数3、js 弹窗处理4、js 流程控制语句和 switch 结构语句应用 一、HTML 常用标签 HTML:超文本标记语言 超文本:不仅只包含文字,还有超链接、视频…这些…...

一文了解氨基酸的分类、代谢和应用
氨基酸(Amino acids)是在分子中含有氨基和羧基的一类化合物。氨基酸是生命的基石,人类所有的疾病与健康状况都与氨基酸有直接或间接的关系。氨基酸失衡可引起肝硬化、神经系统感染性疾病、糖尿病、免疫性疾病、心血管疾病、肾病、肿瘤等各类疾…...

系统学习算法:动态规划(斐波那契+路径问题)
题目一: 思路: 作为动态规划的第一道题,这个题很有代表性且很简单,适合入门 先理解题意,很简单,就是斐波那契数列的加强版,从前两个数变为前三个数 算法原理: 这五步可以说是所有…...
jquery实现文字点选验证码
文字点选验证码是一种有效的防止自动化攻击的手段。用户需要按照提示顺序点击特定的文字,验证通过后才能进行下一步操作。本文将详细介绍如何使用jQuery实现这种验证码。 一、实现思路 生成验证码:随机生成一组文字,并随机排列在验证码区域…...
VTK|加载ply文件数据进行平移+高程渲染
文章目录 将 .ply 点云或模型数据进行 Elevation 着色并可视化渲染的完整流程🟦 1. **使用 ElevationFilter 给模型上色(根据 Z 值)**🟩 2. **构造 Jet 风格的 Lookup Table(颜色映射表)**🔷 3.…...

JAVA房屋租售管理系统房屋出租出售平台房屋销售房屋租赁房屋交易信息管理源码
一、源码描述 这是一套房屋租售管理源码,基于SpringBootVue框架,后端采用JAVA开发,源码功能完善,涵盖了房屋租赁、房屋销售、房屋交易等业务。 二、源码截图...

掌握Multi-Agent实践(三):ReAct Agent集成Bing和Google搜索功能,采用推理与执行交替策略,增强处理复杂任务能力
一个普遍的现象是,大模型通常会根据给定的提示直接生成回复。对于一些简单的任务,大模型或许能够较好地应对。然而,当我们面对更加复杂的任务时,往往希望大模型能够表现得更加“智能”,具备适应多样场景和解决复杂问题的能力。为此,AgentScope 提供了内置的 ReAct 智能体…...
AOP实现原理
AOP实现原理 背景实现常用注解 背景 感觉需要掌握, 对理解其他知识点有好处. 实现 动态代理实现. JDK 实现 InvacationHander CGLib Enhancer 轻量级的基于ASM字节码框架. 常用注解 Before After AfterRetruning AfterThrowing Around...

Bearer Token的神秘面纱:深入解析HTTP认证头的设计哲学
为何有些Token会带Bearer? 在接口测试与开发中,我们经常会遇到这样的请求头: Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... 这个神秘的"Bearer"前缀从何而来?为何不直接使用Authorization: Token..…...

【国产化】在银河麒麟ARM环境下离线安装docker
1、前言 采用离线安装的方式。 关于离线安装的方式官网有介绍,但是说的很简单,网址:Binaries | Docker Docs 官网介绍的有几种主流linux系统的安装方式,但是没有kylin的,所以在此记录一下。 在安装过程中也遇到了些…...
K8S - Harbor 镜像仓库部署与 GitLab CI 集成实战
引言 在 Kubernetes 环境中,容器镜像的存储与管理至关重要。企业级镜像仓库(如 Harbor)为团队提供了安全、稳定、可扩展的镜像管理解决方案。 一、Harbor 安装与配置 Harbor 是由 VMware 开源的企业级云原生镜像仓库,它不仅支持…...
ASCII码的快速记忆方法
当然!记住ASCII码的关键是找到规律和分组记忆。以下是一些快速记忆的方法: 1. 记住关键分界点 0~31:控制字符(不可打印,如换行、制表符等),不需要全记,知道0是NULL,10是…...

java volatile关键字
volatile 是 Java 中用于保证多线程环境下变量可见性和禁止指令重排序的关键字。 普通变量不加volatile修饰有可见性问题,即有线程修改该变量值,其他线程无法立即感知该变量值修改了。代码: private static int intVal 0; // 普通变量未加 …...
解决SQL Server SQL语句性能问题(9)——正确使用索引
前述章节中,我们介绍和讲解了SQL调优所需要的基本知识和分析方法,那么,通过前述这些知识和方法定位到问题后,接下来,我们该怎么做呢?那就是本章的内容,给出解决SQL语句性能问题的、科学而合理的方案和方法。 本章主要对解决SQL语句性能问题的几种常用方法进行说明和讲解…...

Vibe Coding: 优点与缺点
如果你最近在开发圈子里,你很可能听说过这个新趋势"vibe coding"(氛围编程)。 我只能说我对此感受复杂。以下是原因。 优势 在构建新项目时,靠着氛围编程达到成功感觉很自由!但对于遗留代码来说情况就不同了,尽管也不是不可能。 实时反馈和快速迭代 Cursor(…...

技术分享 | 如何在2k0300(LoongArch架构)处理器上跑通qt开发流程
近期迅为售后团队反馈,许多用户咨询:2K0300处理器采用了LA264处理器核,若要在该处理器上运行Qt程序,由于架构发生了变化,其使用方法是否仍与ARM平台保持一致? 单纯回答‘一致’或‘不一致’缺乏说服力&…...