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今天的分享就到此结束了,点赞关注不迷路!

相关推荐
weixin_462446231 分钟前
Python Flask静态文件服务器:支持自动JSON扩展名补全的智能文件服务
服务器·python·flask
杰瑞不懂代码4 分钟前
playwright 基础入门教程,更便捷的数据获取
python·网络爬虫·playwright·自动化处理
智航GIS6 分钟前
10.3 BeautifulSoup:HTMLXML 解析库
python·beautifulsoup
啊吧怪不啊吧14 分钟前
2026年1月远程软件大比拼
测试工具
dyxal17 分钟前
Excel情感标注工具:用Python+Flask打造高效数据标注平台
python·flask·excel
微尘hjx19 分钟前
【深度学习02】YOLO模型的数据集、训练、验证、预测、导出
人工智能·python·深度学习·yolo·机器学习·训练·yolo11
小北方城市网21 分钟前
GEO 全场景智能生态:自适应架构重构与极限算力协同落地
开发语言·人工智能·python·重构·架构·量子计算
0思必得022 分钟前
[Web自动化] Selenium简单使用
前端·python·selenium·自动化·web自动化
databook22 分钟前
棒棒糖图:当条形图遇上极简美学
python·数据分析·数据可视化
B站计算机毕业设计之家25 分钟前
机器学习:Python豆瓣图书数据分析可视化系统 Echarts图表展示 爬虫数据采集 Flask 计算机毕业设计(建议收藏)✅
python·机器学习·数据分析·毕业设计·可视化·图书·书籍