Python接口测试框架选择之pytest+yaml+Allure!

一、为什么选择pytest?

pytest完全兼容python自带的unittest

pytest让单元测试更简单,能很好的管理测试用例。

对于实现接口测试的复杂场景,pytest的fixture、PDB等高阶用法都能实现需求。

入门简单,对于代码基础薄弱的团队人员,也可以用pytest实现较简单的单个接口测试。

社区活跃,遇到问题可以在网上找到解决方法。

pytest实战例子:修改用户信息

场景:测试修改用户昵称是否成功

涉及接口:用户登录接口、用户信息修改接口、用户信息接口。用户信息修改接口和用户信息接口需要上传登录接口下发的token字段

接口处理逻辑分析:

用户登录后拿到token,将token设为全局变量。

上传修改后的用户昵称到用户修改接口

请求用户信息接口,拿到昵称字段,判断是否为修改后的的昵称。

代码展示

import pytest
updata_name = "sunny"
expect_result = updata_name #期待修改后的昵称
class TestUpdataUserInfo:
def setup_class(self):
print("请求登录接口,获取到token")
self.token = "token" #将token设为全局变量,这里暂时用"token"代替接口返回的token

def teardown_class(self):
# 此方法写请求获取用户信息接口,拿到用户昵称逻辑代码
tokenStr = self.token # 获取到token,用于请求修改用户信息接口
print("请求用户信息接口,拿到昵称")
nickName = "sunny"#假设接口拿到的昵称为"sunny"
assert nickName==expect_result #校验是否为期待的昵称

def test_update_userInfo(self):
#此方法写上传修改后的用户昵称到用户修改接口的逻辑
tokenStr = self.token #获取到token,用于请求修改用户信息接口
print("token:"+tokenStr)
print("上传需要修改的昵称")
if __name__ == '__main__':
pytest.main(['-s', 'pytest-demo.py'])
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036【暗号:csdn999】

二、为什么选择yaml?

写法简洁易懂,视觉上也很舒适

yaml支持python,yaml+pytest实现数据分离很简便。

配置有序,支持数组写法,数组中的元素可以是基本数据类型也可以是对象

实战例子:用yaml写测试数据

上文的pytest例子中,测试上传的昵称数据和期待修改后的昵称数据都是写在updataUserInfo.py文件,这种写法不方法管理,现在改为用yaml文件写测试数据。

代码展示

创建yaml文件:updataUserInfo.yaml,将测试数据写入
test:
name: test case1
updateName: "sunny"
result:
expectName: "sunny"

获取到yaml数据如下

{'test': {'name': 'test case1', 'updateName': 'sunny', 'result': {'expectName': 'sunny'}}}

获取到yaml文件里的数据,进行请求和校验

import pytest
import yaml

# updata_name = "sunny"
# expect_result = updata_name #期待修改后的昵称
class TestUpdataUserInfo(object):

def setup_class(self):
##获取yaml文件里面的数据,
with open("./updataUserInfo.yaml", 'r') as f:
content = yaml.safe_load(f)
print(content)
self.update_name = content['test']['updateName']
self.expect_name = content['test']['result']['expectName']

print("请求登录接口,获取到token")
self.token = "token" #将token设为全局变量,这里暂时用"token"代替接口返回的token

def teardown_class(self):
# 此方法写请求获取用户信息接口,拿到用户昵称逻辑代码
tokenStr = self.token # 获取到token,用于请求修改用户信息接口
print("请求用户信息接口,拿到昵称")
nickName = "sunny"#假设接口拿到的昵称为"sunny"
assert nickName==self.expect_name #校验是否为期待的昵称

def test_update_userInfo(self):
#此方法写上传修改后的用户昵称到用户修改接口的逻辑
tokenStr = self.token #获取到token,用于请求修改用户信息接口
print("token:"+tokenStr)
print("需要修改的值为:"+self.update_name)
print("上传需要修改的昵称")


if __name__ == '__main__':
pytest.main(['-s', 'pytest-demo.py'])

三、为什么选择Allure?

生成高大上的测试报告,展示测试结果直观明了,利于向领导展示自动化测试成果。

有失败用例截图、测试步骤和测试说明信息。方便测试人员查看测试结果。

Allure测试报告展示

END今天的分享就到此结束了,点赞关注不迷路!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Live800:客服中心必备的7种客户服务原则

在现代商业社会中,客户服务已经成为企业竞争的重要因素之一。提供高质量的客户服务可以帮助企业赢得客户的忠诚度和信任,从而推动企业的发展。客服中心是企业与客户之间的桥梁,对于客户服务的质量要求更高。为了提高客服中心的服务质量&#…

Pandas教程(非常详细)(第六部分)

接着Pandas教程(非常详细)(第五部分),继续讲述。 三十一、Pandas Excel读写操作详解 Excel 是由微软公司开发的办公软件之一,它在日常工作中得到了广泛的应用。在数据量较少的情况下,Excel 对…

移动端APP版本治理

1 背景 在许多公司,APP版本都是不受重视的,产品忙着借鉴,开发埋头编码,测试想着不粘锅。 只有在用户反馈app不能用的时候,你回复客服说,让用户升级最新版本,是不是很真实。 而且业界也很少有…

SpringEvent事件通知机制

“Spring Event” 是 Spring 框架通过事件驱动的编程模型来处理应用程序中的事件。开发者可以定义自己的事件,然后在应用程序中触发这些事件。Spring 框架提供了用于发布和监听事件的机制,以实现松散耦合的组件间通信。 有两个核心组件: 事…

基于springboot实现校园医疗保险管理系统【项目源码】计算机毕业设计

基于springboot实现校园医疗保险管理系统演示 系统开发平台 在线校园医疗保险系统中,Eclipse能给用户提供更多的方便,其特点一是方便学习,方便快捷;二是有非常大的信息储存量,主要功能是用在对数据库中查询和编程。其…

SLF4J: Class path contains multiple SLF4J bindings.

问题截图 问题原因 这里就是由于hbase 安装路径下的一个文件和hadoop安装路径下的文件起冲突了 解决办法 我的路径: 这个一定要看自己电脑上的路径 /usr/local/hbase/lib/client-facing-thirdparty/ slf4j-log4j12-1.7.25.jar更名为: /usr/local/hb…

docker部署Prometheus+Cadvisor+Grafana实现服务器监控

一:Prometheus 1:介绍: Prometheus是一个在SoundCloud上构建的开源系统监视和警报工具包 2:特点 多维度数据模型-由指标键值对标识的时间序列数据组成;PromQL,一种灵活的查询语言;不依赖分布…

会议邀请 | 思腾合力邀您共赴第二十五届高交会(CHTF2023)

2023年11月15-19日,以“激发创新活力 提升发展质量”为主题的「第二十五届中国国际高新技术成果交易会(CHTF2023)」将在深圳会展中心(福田)和深圳国际会展中心(宝安)举办。思腾合力作为行业领先…

NOIR脑机接口机器人——让脑机接口通过少样本学习实现做家务的能力

一、概述 大脑与机器人接口(BRI)是人类艺术、科学和工程的集大成之作,其影响已经贯穿于无数科幻作品和创意艺术之中,如《黑客帝国》和《西部世界》等。然而,要真正实现BRI并创造出能够与人类完美协同运作的机器人系统…

前端开发好用的vscode插件

1.TONGYI Lingma 通义灵码,是一款基于通义大模型的智能编码辅助工具,提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码注释生成、代码解释、研发智能问答、异常报错排查等能力,并针对阿里云 SDK/API 的使用场景调优&#xff0…

音频限幅器电路芯片D2761,工作电压范围宽,输出噪声低

D2761是为保护扬声器所设计的音频限幅器,其限幅值可通过外接电 阻来调节,适合在个人电脑、便携式音响等系统中作音频限幅用。 主要特点: ● 工作电压范围宽:2.7V ~ 13.0V ● 外接电阻调节限幅范围:0.2V …

UE4动作游戏实例RPG Action解析四:装备系统

导语: 以加血道具为例,详细分析拆解ActionRPG的装备系统,包含装备系统需求和数据结构设计,以及实现 一、装备系统需求: 装备槽: 已获取装备和未获取装备: 当已经装备一个道具时,再次捡到道具,会把道具放在装备库,不会放在装备槽中, 当没有装备道具时,会拾取道具…

Android图片压缩插件

今天才发现这个还有插件,平时都是传网站上压缩完了又下载下来覆盖原文件。现在有这个了,开发好高效😁!分享给大家,可能对你们有用哈哈😆。也可能你们早都知道了……

P6入门:项目初始化10-项目详情之设置Setting

前言 使用项目详细信息查看和编辑有关所选项目的详细信息,在项目创建完成后,初始化项目是一项非常重要的工作,涉及需要设置的内容包括项目名,ID,责任人,日历,预算,资金,分类码等等&…

java实现计数排序

图解 计数排序是一种线性时间复杂度的排序算法,它不基于比较排序,而是根据待排序序列中元素的值来进行排序。 具体的过程如下: 统计序列中每个元素出现的个数,得到一个计数数组count。其中,count[i]表示待排序序列中值…

专业的SRM系统全流程管理服务

一、什么是SRM系统 SRM系统,即供应商关系管理,是供应链管理中的重要组成部分,帮助企业与供应商建立、维护和改善业务关系,以实现双方共赢。本文将从供应商寻源到合同签订、订单履行、到付款及供应商评价等环节,阐述SR…

【开源】基于Vue.js的超市自助付款系统的设计和实现

目录 一、摘要1.1 项目介绍1.2 项目详细录屏 二、研究内容2.1 商品类型模块2.2 商品模块2.3 超市账单模块 三、界面展示3.1 登录注册模块3.2 超市商品类型模块3.3 超市商品模块3.4 商品购买模块3.5 超市账单模块 四、部分源码展示4.1 实体类定义4.2 控制器接口 五、配套文档展示…

.pcd文件格式

更详细的格式介绍可以查看我的这篇博客 『Open3D』安装与点云格式通识_open3d安装_NNNNNathan的博客-CSDN博客文章浏览阅读1.9k次。介绍了open3d的安装和当前适用与存储点云信息的文件格式,并详细介绍了pcd与ply两种格式。_open3d安装https://blog.csdn.net/qq_413…

【QT系列教程】之二创建项目和helloworld案例

文章目录 一、QT创建项目1.1、创建项目1.2、选择创建项目属性1.3、选择路径和项目名称1.4、选择构建项目类型1.5、布局方式1.6、翻译文件,根据自己需求选择1.7、选择套件1.8、项目管理,自行配置1.9、配置完成,系统自动更新配置 二、QT界面介绍…

Payshield 10K是什么意思?有什么作用?

PayShield 10K是一种支付安全产品,由数字货币和法币混合而成的数字货币产品。它的意思是保护商家在交易过程中可能遭受的损失。这种产品的主要作用是保护数字货币支付系统的安全,并确保商家在交易过程中获得他们应得的收益。 PayShield 10K具有以下特点和…