Python自动化之如何利用allure生成测试报告
Allure测试报告框架帮助你轻松实现”高大上”报告展示。本文通过示例演示如何从0到1集成Allure测试框架。重点展示了如何将Allure集成到已有的自动化测试工程中、以及如何实现报表的优化展示。Allure非常强大,支持多种语言多种测试框架,无论是Java/Python还是Junit/TestNG,其他语言或者框架实现的流程和本文一致,具体配置参照各语言框架规范
安装
安装allure
Windows用户:
- scoop install allure (需要先下载并安装Scoop,该方法无需配置环境变量)
MAC用户:
- 通过Homebrew进行自动安装
- brew install allure (如果Homebrew版本比较旧,需要先升级Homebrew,否则安装的allure版本也很老,可能会与Python插件不兼容)
手动安装:
- 可以从官网 Central Repository: io/qameta/allure/allure-commandline 手动下载
- 目前最新版本为2.13.6
下载后解压并配置环境变量
安装allure-pytest插件
- pip install allure-pytest
allure常用特性
希望在报告中看到测试功能,子功能或场景,测试步骤,包括测试附加信息可以使用@feature,@story,@step,@attach
步骤:
- import allure
- 功能上加@allure.feature("功能名称")
- 子功能上加@allure.story("子功能名称")
- 步骤上加@allure.step("步骤细节")
- @allure.attach("具体文本信息"),需要附加的信息,可以是数据,文本,图片,视频,网页
- 如果只测试部分功能运行的时候可以加限制过滤:
- pytest 文件名 --allure-features "需要运行的功能名称"
allure特性—feature/story
@allure.feature与@allure.store的关系
- feature相当于一个功能,一个大的模块,将case分类到某个feature中,报告中在behaviore中显示,相当于testsuite
- story相当于对应这个功能或者模块下的不同场景,分支功能,属于feature之下的结构,报告在features中显示,相当于testcase
- feature与story类似于父与子关系
step特性
- 测试过程中每个步骤,一般放在具体逻辑方法中
- 可以放在关键步骤中,在报告中显示
- 在app,web自动化测试中,建议每切换到一个新的页面当做一个step
- 用法:
- @allure.step() 只能以装饰器的形式放在类或方法上面
- with allure.step(): 可以放在测试用例方法里面,但测试步骤的代码需要被该语句包含
运行:
在测试执行期间收集结果
pytest [测试文件] -s -q --alluredir=./result --clean-alluredir
- --alluredir这个选项,用于指定存储测试结果的路径
- --clean-alluredir 这个选项用来清除之前生成的结果
查看测试报告:
方法一:测试完成后查看实际报告,在线看报告,会直接打开默认浏览器展示当前报告
allure serve ./result
方法二:从结果生成报告,这是一个启动tomcat的服务,需要两个步骤
生成报告:
allure generate ./result -o ./report --clean (注意:--clean用来清除之前已生成的报告)
打开报告:
allure open -h 127.0.0.1 -p 8883 ./report (该方法直接生成一个tomcat服务,可远程访问)
举个例子:
有如下代码文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
|
依次执行命令:
pytest test_allure.py --alluredir=./result --clean-alluredir
allure serve ./result
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
生成的报告:
allure特性-testcase
关联测试用例(可以直接给测试用例的地址链接)
例子:
1 2 3 4 |
|
按重要性级别进行一定范围测试
通常测试有P0、冒烟测试、验证上线测试。按重要性级别来执行的,比如上线要把主流程和重要模块都跑一遍,可通过以下方法解决
通过附加@pytest.mark标记
通过allure.feature,allure.story
也可以通过allure.severity来附加标记
- 级别:
- trivial:不重要,轻微缺陷(必输项无提示,或者提示不规范)
- minor 不太重要,次要缺陷(界面错误与UI需求不符)
- normal:正常问题,普通缺陷(数值计算错误)
- critical:严重,临界缺陷(功能点缺失)
- blocker:阻塞,中断缺陷(客户端程序无响应,无法执行下一步操作)
使用方法:
在方法、函数和类上面加 @allure.severity(allure.severity_level.TRIVIAL)
执行:
pytest -s -v 文件名 --allure-severities normal,critical
举例说明:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
|
执行:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
终极用例:
百度搜索:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
执行:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
报告:
总结:
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。
相关文章:

Python自动化之如何利用allure生成测试报告
Allure测试报告框架帮助你轻松实现”高大上”报告展示。本文通过示例演示如何从0到1集成Allure测试框架。重点展示了如何将Allure集成到已有的自动化测试工程中、以及如何实现报表的优化展示。Allure非常强大,支持多种语言多种测试框架,无论是Java/Pytho…...

【晴问算法】入门篇—贪心算法—区间不相交问题
题目描述 给定n个开区间,从中选择尽可能多的开区间,使得这些开区间两两没有交集。 输入描述 输出描述 输出一个整数,表示最多选择的开区间个数。 样例1输入 4 1 3 2 4 3 5 6 7 输出 3 解释 最多选择(1,3)、(3,5)、(6,7)三个区间,它…...
WPF意外无法启动?try-catch也无法捕捉?0xc0000409?
文章目录 背景尝试原因解决 背景 周六在家加了一会会的班,公司电脑没关机,然后周一上班。。。诡异的事情发生了,在家远程都能运行的程序,突然运行不起来了 尝试 我对WPF程序做了如下尝试: 修改UI框架对OnStartup方…...

微服务day05(中) -- ES索引库操作
索引库就类似数据库表,mapping映射就类似表的结构。 我们要向es中存储数据,必须先创建“库”和“表”。 2.1.mapping映射属性 mapping是对索引库中文档的约束,常见的mapping属性包括: type:字段数据类型,…...
AI智能电销机器人可以做哪些事情呢?智能机器人搭建
随着科技不断发展,选择使用电销智能机器人的行业有很多,因为它的适用性和实用性都非常广,电销智能机器人使用之后能够让企业的整体工作效率变得更加高效,全天候灵活响应也能帮助企业做好业务工作。对于一些还不太了解电销智能机器…...

别踩坑!2024年小红书代写代发机构选择指南!
在小红书平台上,一篇优质的内容往往能迅速吸引用户的关注,为品牌带来不可估量的曝光和转化。然而,对于许多品牌来说,创作高质量的小红书内容并非易事。因此,选择一家专业的小红书代写代发机构成为了不少品牌的明智之选…...

数据出路 -----pandas
Pandas 是 Python 语言的一个扩展程序库,用于数据分析。 Pandas 的主要数据结构是 Series (一维数据)与 DataFrame(二维数据)。 数据结构 Series 是一种类似于一维数组的对象,它由一组数据(各…...

Win11右键菜单定制
0.优化目标 优化成:右键菜单优化成全量菜单选项,并精简掉我不需要的菜单选项。 具体优化步骤: 1.win11菜单恢复到win10经典状态 win11右键菜单是缩水版的,需要再次点击“显示更多选项”才能找到自己想用到的选项,再…...
将深度图转成2D激光
文章目录 大致过程具体实现运行结果大致过程 将深度图转换为2D激光扫描数据是一个在机器人和自动化领域常见的任务,尤其是在计算资源有限的情况下或当只需要2D数据时。这个过程通常涉及从深度图中选择一个水平切片(或多个切片)并将其转换为距离读数。以下是基本步骤: 确定…...
rust学习笔记(8-12)
8 集合 Rust 标准库中包含一系列被称为 集合(collections)的非常有用的数据结构。大部分其他数 据类型都代表一个特定的值,不过集合可以包含多个值。不同于内建的数组和元组类型,这些 集合指向的数据是储存在堆上的,这…...

JetPack之DataBinding基础使用
目录 一、简介二、使用2.1 使用环境2.2 xml文件绑定数据2.3 数据绑定的对象2.3.1 object2.3.2 ObseravbleField2.3.3 ObseravbleCollection 2.4 绑定数据 三、应用场景 一、简介 DataBinding是谷歌15年推出的library,DataBinding支持双向绑定,能大大减少绑定app逻辑…...

设计模式学习笔记 - 设计原则与思想总结:2.运用学过的设计原则和思想完善之前性能计数器项目
概述 在 《设计原则 - 10.实战:针对非业务的通用框架开发,如何做需求分析和设计及如何实现一个支持各种统计规则的性能计数器》中,我们讲解了如何对一个性能计数器框架进行分析、设计与实现,并且实践了一些设计原则和设计思想。当…...

docker入门(八)—— dockerfile详细介绍,编写dockerfile
dockerfile(重点) 大家想想,Nginx,tomcat,mysql 这些镜像都是哪里来的?官方能写,我们不能写吗? 我们要研究自己如何做一个镜像,而且我们写的微服务项目打包上云部署&am…...
机器学习复习(9)——自定义dataset
目录 第一种dataset(文件夹名即为标签) 用于将格式(1)转换为格式(2) 第二种dataset(标签在labels文件夹下的对应的txt文件里面) 第一种dataset(文件夹名即为标签) 数据组织格式(1) --data ----train …...

【Redis】缓存穿透
问题发生背景:客户端请求的数据再缓存中和数据库中都不存在。 导致的问题:缓存永远不会生效,这些请求都会去请求数据库—导致数据库压力增大。 解决方案: 1.缓存空对象 在Redis中缓存空对象,告诉客户端数据库中没有该值…...

编程出现bug?怎么用Python打印异常
在 Python 编程中,异常是指程序执行过程中出现的错误或异常情况。当程序遇到异常时,为了更好地调试和定位问题,我们需要打印异常信息。本文将详细介绍如何在 Python 中打印异常,并提供一些示例和注意事项。 一、try-except 语句捕…...
P1958 上学路线
题目传送门:P1958 上学路线 一个DFS求迷宫的的题。 详细在代码里: #include <bits/stdc.h>using namespace std; int n,m,a[20][20],t,x,y,ans0; int dx[4]{0,1}; int dy[4]{1,0}; int flag[105][105]{0}; inline void dfs(register int x,regis…...

Android14之HIDL报错:Invalid sparse file format at header magic(一百九十六)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…...

旭日x3派目标跟随小车
目标跟随小车(yolov5、安全帽识别) 前言最终结果接线实现 前言 上板运行的后处理使用cython封装了,由于每个版本的yolo输出的形状不一样,这里只能用yolov5-6.2这个版本。 ①训练自己的模型并部署于旭日x3派参考: http…...

金潮实业邀您参观2024长三角快递物流展览会
展会介绍 本届展会致力于全面展示快递物流上下游领域的创新解决方案,涵盖快递物流供应链、智能装备、AGV机器人与无人搬运、自动识别、智慧仓储、智慧物流、无人配送、新能物流车及商用车、绿色包装、冷链物流等各个环节,为促进行业合作共融,…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...

以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...

【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

mac:大模型系列测试
0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何,是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试,是可以跑通文章里面的代码。训练速度也是很快的。 注意…...
Python 高效图像帧提取与视频编码:实战指南
Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...