Pytest 与allure测试报告集成

通过Feature, story, step 记录测试的功能,场景及测试步骤

# login.py
'''
login_func函数
传入参数是name 和 password
当输入的name和password与数据库db_data中数据一致时,返回“XXX成功登录系统!”
当输入的name存在于数据库db_data但密码不正确时,返回“XXX账号,密码输出错误,请重新输入!”
当输入的name不存在于数据库db_data中时,返回“XXX账号不存在,请输入正确的账号!”
'''def login_func(name,password):db_data = {"name": ['Jie', 'Jack', 'Jame'], "password": {'Jie': '123456', 'Jack': '111111', 'Jame': '222222'}}if name in db_data["name"] and str(password) == db_data["password"][name]:return(f"{name} 成功登录系统!")elif name in db_data["name"] and str(password) != db_data["password"][name]:return(f"{name} 账号,密码输出错误,请重新输入!")else:return(f"{name} 账号不存在,请输入正确的账号!")

login.py是一个登录模块,login_func函数主要实现登录功能

test_mod9.py主要实现对login.py中login_func函数功能测试

from login import login_func@allure.feature("测试登录模块")
class TestMod9:@allure.title("测试登录正例01")@allure.story("用正确的账号与密码登录")def test_login_01(self):name = "Jie"password = "123456"with allure.step(f"使用账号名称:{name},密码:{password}进行登录"):login = login_func(name,password)exc = f"{name} 成功登录系统!"pytest.assume(login == exc)@allure.title("测试登录反例02")@allure.story("用正确的账号与错误的密码登录")def test_login_02(self):name = "Jie"password = "023456"with allure.step(f"使用账号名称:{name},密码:{password}进行登录"):login = login_func(name,password)exc = f"{name} 账号,密码输出错误,请重新输入!"pytest.assume(login == exc)@allure.title("测试登录反例03")@allure.story("用不存在的账号进入登录")@allure.description("当登录账号不存在时,有正确的提示")def test_login_03(self):name = "Hele"password = "023456"with allure.step(f"使用账号名称:{name},密码:{password}进行登录"):login = login_func(name, password)exc = f"{name} 不存在账号,请输入正确的账号!"pytest.assume(login == exc)

test_mod9.py测试模块中,包含一个class TestMod9 测试类,测试类下包含了测试登录功能的三个测试用例

@allure.feature("测试登录模块"): 在报告中记录测试需求(即测试用例集的功能,要测试什么)一般修饰测试类(testsuite);

@allure.story("用正确的账号与密码登录"):在报告中记录根据测试需求细化的测试场景(即测试用例场景描述)一般修饰测试用例即方法;

(注:feature与story属于父子关系)

@allure.title("测试登录反例03"):在报告中自定义测试用例标题

@allure.description("当登录账号不存在时,有正确的提示"):报告中测试用例的详细描述

with allure.step(f"使用账号名称:{name},密码:{password}进行登录"): 在报告中记录测试用例中的测试步骤或详细信息,放在测试用例的代码逻辑中;

  • -alluredir=./result/ 为指定报告结果数据存入路径,执行上述命令后会自动在该目录下生成一个result文件夹存放报告数据

 

命令:allure serve ./result/

1、在本地启动一个server查看allure报告

 

 2、根据result文件夹中的数据在项目目录下生成allure-report存入html报告

命令:allure generate ./result/
命令:allure open ./allure-report 在本地启动查看allure报告的服务
命令:allure generate ./result/ -o ./allure-report/ --clean # 每次生成报告时先清除原报告数据

 

 

 

 

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

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

相关文章

在bash或脚本中,如何并行执行命令或任务(命令行、parallel、make)

最近要批量解压归档文件和压缩包,所以就想能不能并行执行这些工作。因为tar自身不支持并行解压,但是像make却可以支持生成一些文件,所以我才有了这种想法。 方法有两种,第一种不用安装任何软件或工具,直接bash或其他 …

源码梳理(3)MybatisPlus启动流程

文章目录 1,MybatisPlus的使用示例2,BaseMapper方法的执行2,1 MybatisMapperProxy代理对象2.2 InvocationHandler接口(JDK动态代理)2.3 MapperMethodInvoker接口2.4 MybatisMapperMethod 3,SqlSession的执行流程3.1 Sq…

sqli-labs-master靶场训练笔记(21-38|精英级)

2024.1.30 level-21 (cookie 注入数据加密) 从页面上就可以看出这次的数据被 baes64 加密了 中国有句古话:师夷长技以制夷 ,用base64加密后的数据即可爆出数据 加密前: admin and updatexml(1,concat(~,(select database()),~),1) and …

MFC结构体写入文件和读取

先定义一个结构体; struct myTxc { char c; CString name; int value; } txc; 读和写的菜单代码; void CjgtrwView::On32771() {// TODO: 在此添加命令处理程序代码CFile file(_T("test1.txt"), CFile::modeCreate | CFile::mod…

大卫·芬奇《消失的她》电影解读

《消失的爱人》(Gone Girl)是一部由大卫芬奇(David Fincher)执导的心理悬疑电影,改编自吉莉恩弗林(Gillian Flynn)的同名小说。这部影片于2014年上映,通过其精巧的剧本、紧张的氛围以…

在 iOS 上安装自定企业级应用

了解如何安装您的组织创建的自定应用并为其建立信任。 本文适用于学校、企业或其他组织的系统管理员。 您的组织可以使用 Apple Developer Enterprise Program 创建和分发企业专用的 iOS 应用,以供内部使用。您必须先针对这些应用建立信任后,才能将其打…

地理坐标系、空间坐标系、epsg查询网站

坐标系可用范围和详细信息的查询网站 简介 epsg.ruiduobao.com是一个可以查询gdal中所有坐标系信息的网站,可查询到坐标系的基准面、椭球体、中央子午线等相关信息,并对每个坐标系的可用范围在地图中进行了显示。详细信息可以看操作视频: e…

Postgresql体系结构

client连接PostgreSQL过程: 1、客户端发起请求 2、主服务postmaster进程负责服务器是否接受客户端的host通信认证,服务器对客户端进行身份鉴别 3、主服务进程为该客户端单独fork一个客户端工作进程postgres 4、客户端与postgres进程建立通信连接&#xf…

1-3 动手学深度学习v2-线性回归的从零开始实现-笔记

手动创建训练数据集 根据带有噪声的线性模型构造一个人造数据集。我们使用线性模型参数 w [ 2 , − 3.4 ] T \pmb{w} [2,-3.4]^{T} w[2,−3.4]T、 b 4.2 b 4.2 b4.2和噪声项 ϵ \epsilon ϵ生成数据集及其标签: y X w b ϵ \pmb{y} \pmb{Xw}b\epsilon yXw…

SpringMVC实现对网页的访问,在请求控制器中创建处理请求的方法

目录 测试HelloWorld RequestMapping注解 RequestMapping注解的位置 RequestMapping注解的value属性 RequestMapping注解的method属性 SpringMVC支持路径中的占位符(重点) SpringMVC获取请求参数 1、通过ServletAPI获取 2、通过控制器方法的形参…

Unity3D实现坦克大战

一、效果图演示 二、逻辑剖析 从界面上: 需要一个Canvas满屏对着用户,该Canvas上展示用户的游戏数据,比如血条。需要一个Canvas放在蓝色坦克上方,也需要实时对着用户,显示敌人的血条信息两个坦克一个平面Plane放草地…

C++并发编程 -2.线程间共享数据

本章就以在C中进行安全的数据共享为主题。避免上述及其他潜在问题的发生的同时,将共享数据的优势发挥到最大。 一. 锁分类和使用 按照用途分为互斥、递归、读写、自旋、条件变量。本章节着重介绍前四种,条件变量后续章节单独介绍。 由于锁无法进行拷贝…

三层交换组网实验(华为)

思科设备参考:三层交换组网实验(思科) 一,技术简介 三层交换技术的出现,解决子网必须依赖路由器进行管理的问题,解决传统路由器低速、复杂所造成的网络瓶颈问题。一个具有三层交换功能的设备可简单理解为…

蓝桥杯每日一题-----数位dp练习

题目 链接 参考代码 写了两个,一个是很久以前写的,一个是最近刚写的,很久以前写的时候还不会数位dp所以写了比较详细的注释,这两个代码主要是设置了不同的记忆数组,通过这两个代码可以理解记忆数组设置的灵活性。 im…

npm ERR! code CERT_HAS_EXPIRED

执行npm i报错: npm ERR! code ETIMEDOUT npm ERR! syscall connect npm ERR! errno ETIMEDOUT npm ERR! network request to https://registry.npmjs.org/react-redux failed, reason: connect ETIMEDOUT 104.16.2.35:443 npm ERR! network This is a problem rel…

python常用pandas函数nlargest / nsmallest及其手动实现

目录 pandas库 Series和DataFrame nlargest和nsmallest 用法示例 代替方法 手动实现 模拟代码 pandas库 是Python中一个非常强大的数据处理库,提供了高效的数据分析方法和数据结构。它特别适用于处理具有关系型数据或带标签数据的情况,同时在时间…

十分钟学会用springboot制作微信小程序富文本编辑器

1.1 富文本模型设计 在构建富文本编辑器系统时,首先需要设计一个合适的富文本模型。 CREATE TABLE IF NOT EXISTS rich_texts (id INT PRIMARY KEY AUTO_INCREMENT,title VARCHAR(255),content TEXT,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );这个表包括…

【算法与数据结构】647、516、LeetCode回文子串+最长回文子序列

文章目录 一、647、回文子串二、516、最长回文子序列三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、647、回文子串 思路分析:判断一个字符串是否为回文串那么必须确定回文串的所在区间,而一维…

(2)(2.13) Rockblock Satellite Modem

文章目录 前言 1 支持的MAVLink命令信息 2 设置 3 使用方法 4 数据成本 5 参数 前言 !Note 该功能仅适用于 ArduPilot 4.4 或更高版本,并且要求飞行控制器支持 LUA 脚本(LUA Scripts)。 RockBLOCK 卫星调制解调器可实现与 ArduPilot 飞行器的全球…

如何将pdf转换成ppt?掌握这个方法就简单多了

有时候,PDF文件的布局和设计可能需要进行微调或重新排版,以适应PPT的特定格式和风格。那么怎么pdf怎么转ppt呢?为了更方便地对布局、字体、图像和其他元素进行编辑和调整,以符合PPT的需求,我们可以直接通过pdf在线转pp…