pytest自动化框架之allure测试报告的用例描述设置
allure测试报告的用例描述相关方法;如下图

allure标记用例级别severity
在做自动化测试的过程中,测试用例越来越多的时候,如果执行一轮测试发现了几个测试不通过,我们也希望能快速统计出缺陷的等级。
pytest结合allure框架可以对用例的等级做详细的划分。
allure对用例的等级划分成五个等级:
- blocker 阻塞缺陷(功能未实现,无法下一步)
- critical 严重缺陷(功能点缺失)
- normal 一般缺陷(边界情况,格式错误)
- minor 次要缺陷(界面错误与ui需求不符)
- trivial 轻微缺陷(必须项无提示,或者提示不规范)
写法一:
@allure.severity("blocker")
@allure.severity("critical")
@allure.severity("normal")
@allure.severity("minor")
@allure.severity("trivial")
写法二:
@allure.severity(allure.severity_level.Blocker)
@allure.severity(allure.severity_level.critical)
@allure.severity(allure.severity_level.normal)
@allure.severity(allure.severity_level.Minor)
@allure.severity(allure.severity_level.Trival)
如果想根据用例等级去执行用例可以使用下面的参数:
allure命令行参数allure-severities
pytest --alluredir=./report/allure --allure-severities=blocker
pytest --alluredir=./report/allure --allure-severities=blocker,critical
执行代码如下:
import os
import pytest
# 根据优先级过滤 --allure-severities=blocker,normal
pytest.main(['-s','-v','--alluredir=./allure_json_path','--clean-alluredir','--allure-severities=blocker'])
os.system('allure generate %s -o %s --clean'%('./allure_json_path','./allure_html_path'))
敏捷模型中的常用概念

allure测试报告用例描述相关方法实战
1、使用pycharm工具新建一个项目test_suites,在该目录下新建login_module模块、product_module模块,如下图

2、在login_module模块下新建 test_login.py文件下
代码如下:
import allure
# 用例步骤 写法一 用例步骤可写在公有层
@allure.step('步骤一:打开小叮当电商登录界面')
def step_01():
pass# epic 项目名称描述
@allure.epic('[epic] 小叮当电商系统')
# feature 项目版本
@allure.feature('[feature] 小叮当电商系统_V1.0')
class TestLogin:
# 用例模块
@allure.story('[story] 用户登录模块')
# 用例标题
@allure.title('[Title] 验证正确的用户名和密码能否成功登录')
# 管理测试用例的链接地址
@allure.testcase(url='http://47.107.187.45/zentao/www/index.php?m=testcase&f=view&caseID=17&version=1',name='用例连接')
# 管理缺陷的链接地址
@allure.issue(url='http://47.107.187.45/zentao/www/index.php?m=bug&f=browse&productID=4',name='缺陷地址')
# 用例描述
@allure.description('登录测试用例 执行人:小白')
# 定义一个链接
@allure.link(url='https://www.baidu.com/',name='百度搜素')
# 用例等级 blocker、critical、normal、minor、trivial
# @allure.severity('normal') # 用例等级写法1
# 用例等级 blocker、critical、normal、minor、trivial
@allure.severity(allure.severity_level.BLOCKER) # 用例等级写法2
def test_login_case_01(self):
step_01()
# 用例步骤 写法二 用例步骤可写在方法内部
with allure.step('步骤二:输入用户名admin'):
pass
with allure.step('步骤三:输入密码123456'):
pass
# @allure.attach 报告添加附件
with open('C:/Users\Jeff\PycharmProjects\APP_AUTO_DEMO/test_suites\login_module/test.jpeg', 'rb') as img_file:
img_file_obj = img_file.read()
allure.attach(img_file_obj,'测试报错截图',allure.attachment_type.JPG)print("TestLogin test_login_case_01",end=' ')
assert True@allure.story('[story] 用户登录模块')
@allure.title('[Title] 验证错误的用户名和密码能否正确处理')
def test_login_case_02(self):
print("TestLogin test_login_case_02",end=' ')
assert True
3、在product_module模块下新建test_product.py文件
代码如下:
import allure
@allure.epic('[epic] 小叮当电商系统')
@allure.feature('[feature] 小叮当电商系统_V1.0')
class TestProduct:
@allure.story('[story] 商品模块')
@allure.title('[Title] 验证能够成功添加商品到购物车')
def test_product_case_01(self):
print("TestProduct test_product_case_01",end=' ')
assert True
@allure.story('[story] 商品模块')
@allure.title('[Title] 验证商品能成功支付')
def test_product_case_02(self):
print("TestProduct test_product_case_02",end=' ')
assert True
4、在项目test_suites根目录下新建执行文件run_cases.py
代码如下:
import os
import pytestpytest.main(['-s','-v','--alluredir=./allure_json_path','--clean-alluredir'])
os.system('allure generate %s -o %s --clean'%('./allure_json_path','./allure_html_path'))
5、执行run_cases.py文件,在项目test_suites目录下生成两个目录文件夹 allure_json_path和allure_html_path
allure_json_path目录下生的是allure测试报告的json数据源
allure_html_path目录下生成的是allure测试报告html
如下图:

使用谷歌浏览器打开allure_html_path目录下index.html文件;如下图

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关文章:
pytest自动化框架之allure测试报告的用例描述设置
allure测试报告的用例描述相关方法;如下图 allure标记用例级别severity 在做自动化测试的过程中,测试用例越来越多的时候,如果执行一轮测试发现了几个测试不通过,我们也希望能快速统计出缺陷的等级。 pytest结合allure框架可以对…...
在编程中遇到的问题总结
IDEA空包粘黏问题 创建好目录以后会发现idea自动将空包合并在一起了,而且点击设置里面也没有Compact Middle Package Compact Middle Package如果不在设置的主面板上,则点击Tree Appearance,会发现Compact Middle Package在Tree Appearance里…...
【数据库设计和SQL基础语法】--SQL语言概述--SQL的基本结构和语法规则(二)
一、数据控制语言(DCL) 1.1 授权(GRANT) 数据控制语言(DCL)是SQL的一个子集,用于控制数据库中的数据访问和权限。GRANT语句是DCL中的一种,用于向用户或角色授予特定的数据库操作权…...
easyexcel多级表头导出各级设置样式(继承HorizontalCellStyleStrategy实现)
easyexcel多级表头导出各级设置样式(继承HorizontalCellStyleStrategy实现) package com.example.wxmessage.entity;import com.alibaba.excel.metadata.data.WriteCellData; import com.alibaba.excel.write.handler.context.CellWriteHandlerContext;…...
QMLfor python pyside6
QML QML是一种用于创建用户界面的声明性语言,它是Qt生态系统中的一部分。QML使用JavaScript语言和其独特的语法来定义用户界面组件,使得开发人员可以轻松地创建现代化、漂亮而又响应迅速的应用程序。 QML是基于QtQuick技术构建的,QtQuick是…...
几何教学工具 Sketchpad几何画板 mac软件特色
Sketchpad几何画板 for Mac是一款适用于macOS系统的几何教学工具,用户可以在其画板上进行各种几何图形的绘制、演示,帮助教师了解学生的思路和对概念的掌握程度。此外,Sketchpad更深层次的功能则是可以用来进行几何交流、研究和讨论ÿ…...
华清远见嵌入式学习——C++——作业5
作业要求: 代码: #include <iostream>using namespace std;//沙发 类 class Sofa { private:string sitting; //是否可坐double *cost; //花费 public://无参构造函数Sofa(){}//有参构造函数Sofa(string s,double c):sitting(s),cost(new double(…...
Java中的类与类之间的关系
1、Java中类与类之间的关系 依赖(Dependency):一个类依赖于另一个类的定义。这种关系通常通过在一个类的方法中创建另一个类的实例来实现。依赖关系是类与类之间最基本的关系之一。关联(Association):关联…...
全新仿某度文库网站源码/在线文库源码/文档分享平台网站源码/仿某度文库PHP源码
源码简介: 全新仿某度文库网站源码/在线文库源码,是以phpMySQL开发的,它是仿某度文库PHP源码。有功能免费文库网站 文档分享平台 实现文档上传下载及在线预览。 仿百度文库是一个以phpMySQL进行开发的免费文库网站源码。仿某度文库实现文档…...
HTTPS的安全问题及应对方案
HTTPS是一种在网络通信中广泛使用的安全协议,通过使用SSL/TLS加密来保护数据的传输。然而,即使在使用了HTTPS的情况下,仍然存在一些潜在的安全问题。本文将深入探讨HTTPS的安全问题,并提供一些有效的应对策略,以确保数…...
TensorRT-LLM保姆级教程(一)-快速入门
随着大模型的爆火,投入到生产环境的模型参数量规模也变得越来越大(从数十亿参数到千亿参数规模),从而导致大模型的推理成本急剧增加。因此,市面上也出现了很多的推理框架,用于降低模型推理延迟以及提升模型…...
使用Redis构建简易社交网站(3)-状态与信息流
目的 本文目的:实现获取主页时间线和状态推送功能。(完整代码附在文章末尾) 相关知识 在我上一篇文章 《使用Redis构建简易社交网站(2)-处理用户关系》中提到了实现用户关注和取消关注功能。 那这篇文章将教会你掌握:1&#x…...
Python,非二进制的霍夫曼编码
一般来说,霍夫曼编码是二进制的,但是非二进制的也可以。本文中,通过修改N,可以得到任意进制的霍夫曼编码。 非二进制编码的作用:例如,设计九键输入法,希望根据拼音的概率来编码,常用…...
详解—[C++数据结构]—红黑树
目录 一、红黑树的概念 编辑二、红黑树的性质 三、红黑树节点的定义 四、红黑树结构 五、红黑树的插入操作 5.1. 按照二叉搜索的树规则插入新节点 5.2、检测新节点插入后,红黑树的性质是否造到破坏 情况一: cur为红,p为红,g为黑&…...
甘草书店记:6# 2023年10月31日 星期二 「梦想从来不是一夜之间实现的」
甘草书店 今天收到甘草书店第二版装修设计平面图,与理想空间越来越近。 于我而言,每一次世俗意义上所谓的成功都不如文艺作品中表现的那样让人欢腾雀跃。当你用尽120分努力,达到了冲刺满分的实力时,得个优秀的成绩也并不意外。 …...
基于Java SSM车辆租赁管理系统
现代生活方式下,人们经常需要租赁车辆,比如婚庆、自驾游等,车辆租赁公司应运而生,车辆租赁管理系统就是借助计算机对车辆租赁情况进行全面管理。系统的主要管理对象及操作有: 车辆信息:包括车辆类型、车辆名…...
侯捷C++八部曲(一,面向对象)
头文件和类的声明 inline inline修饰函数,是给编译器的一个建议,到底是否为inline由编译器来决定,inline修饰的函数在使用时是做简单的替换,这样就避免了一些函数栈空间的使用,从能提升效率。从另一种角度看ÿ…...
《数据库系统概论》学习笔记——王珊 萨师煊
第一章 绪论 一、数据库系统概述 1.数据库的4个基本概念 (1)数据 描述事物的符号记录称为数据 (2)数据库 存放数据的仓库 (3)数据库管理系统 主要功能: (1)数据定…...
关于使用百度开发者平台处理语音朗读问题排查
错误信息:"convert_offline": false, "err_detail": "16: Open api characters limit reach 需要领取完 识别和合成都要有...
安全认证 | CISP和CISP-PTE的区别在哪里?
CISP和CISP-PTE的区别在哪里? 在国内安全信息认证体系中,虽然CISP认证与CISP-PTE认证都是中国信息安全测评中心负责颁发,均获得政府背景的认可,但二者还是有区别的。 今天就详细为大家介绍一下。 01 定义不同 ★ 注册信息安全专…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
