接口自动化测试:pytest基础讲解

为什么要做接⼝测试?
只靠前端测试很难确保很⾼的覆盖率。接⼝测试,可以模拟出各种类型的⼊参,包括⼀些在前端模拟不出来的⼊参,还能根据接⼝⽂档的定义,设计出相对完善的⼊参值,在接⼝层保证质量,剩余的绝⼤多数问题就是应⽤程序⾃⾝的交互和数据展⽰问题。

接⼝测试相对于交互界⾯测试和功能测试来说,更容易实现⾃动化,执⾏起来⽐较稳定,维护成本也⽐较低。

接⼝⾃动化适⽤于回归测试、线上接⼝巡检等,可以减少⼈⼯回归测试的⼈⼒成本、也可以监控线上接⼝健康情况。

前、后端系统分离,从安全层⾯来说,只依赖前端进⾏不能满⾜安全要求,绕过前端相对容易,所以需要后端同样进⾏输⼊校验,可以依赖接⼝测试去验证了。

⼀、接⼝测试流程
1. 如何测试接⼝ ?

怎么测试接⼝?根据什么来测接⼝呢?这就需要开发提供的接⼝⽂档了,接⼝⽂档和功能测试的需求说明书的功能是⼀样的。包括:接⼝说明、调⽤的url,请求⽅式(Get or Post orRPC协议的框架,Doubbo接⼝协议),请求参数、参数类型、请求参数说明,返回结果说明。有了接⼝⽂档后,我们就可以设计接⼝测试⽤例,⼀般接⼝测试的⽤例编写可以从以下⼏个⽅⾯进⾏:

2. 接⼝⿊盒⽩盒的测试⽅法

◦ 接⼝通过性验证(最基本的)
▪ 传递正确的参数,是否返回正确的结果。
◦ 参数组合验证
▪ 因为参数有必传和⾮必传,
▪ 参数的类型和⻓度,
▪ 以及传递时可能业务上的⼀些限制,
▪ 测试参数的排列组合,保证所有的情况都能覆盖到,
◦ 接⼝的安全性&异常验证

例如绕过验证,⽐如提交订单时,在传递商品价格参数时,修改商品价格,看后端是否做了校验,或者⽀付时,修改订单⾦额,如果能以改之后的⾦额⽀付,这个接⼝就是有问题了。

绕过⾝份验证,就是某个功能只有特殊权限的⽤⼾才能操作,那我穿⼀个普通的⽤⼾,是不是也能操作。

参数是否加密,这个关系到⼀些账号的安全,⽐如我们登录⼀些⽹站时,他要将我们的登录信息进⾏加密。

▪ 密码安全规则,设置密码时复杂程度的校验。
▪ 订单幂等的校验,两个同⼀订单号的订单是否能提交⽀付
▪ 修改⽀付订单的⽀付状态
▪ 异常测试(try catch测试)
▪ 逻辑或、逻辑与的测试
▪ 接⼝参数边界测试0和负数 还有int最⼤值等等;
◦ 根据业务逻辑来设计⽤例
▪ 符合业务逻辑的意思是指,此接⼝包含了这个功能逻辑的所有应⽤场景;
▪ 与其他业务接⼝业务的组合,排除对其他业务的影响;

3. 测试分析

◦ 接⼝测试范围&优先级
◦ 独⽴接⼝测试分析
◦ 联调接⼝测试分析
◦ 接⼝测试框架分析
◦ 涉及到问题:
▪ 没有接⼝测试设计⽂档怎么办
▪ 接⼝设计⽂档⾮常粗糙怎么办
▪ 接⼝设计⽂档看不懂怎么办

4. 冒烟测试

◦ ⼯具选择,postman
◦ 如何使⽤⼯具进⾏冒烟测试,postman使⽤
◦ 冒烟测试标准制定
▪ 新的项⽬,冒烟测试标准制定不要过⾼
▪ 所有待测功能正常使⽤,流程都能通过

5. 接⼝测试脚本编写

◦ 常量参数
◦ 变量参数
◦ 循环处理测试数据
◦ 对接⼝请求回的结果做assert断⾔
◦ 通过⽂件提取测试数据

6. ⼯作总结

◦ 接⼝测试流程总结
◦ 接⼝测试技术总结
▪ 导⼊库⽂件
▪ 发送接⼝请求
▪ 输⼊常量查询条件
▪ 获取接⼝返回结果
▪ 预期输⼊与实际结果⽐对
◦ 接⼝测试⼯作总结

⼆、postman接⼝测试
1. 接⼝的概念

输⼊与输出的验证

2. 接⼝组成

https://svr-6-9008-api.share.51env.net/v1/article/view?id=1
◦ 协议 https
◦ 域名 svr-6-9008-api.share.51env.net
◦ 端⼝号
◦ 路径 /v1/article/view?
◦ 参数 id=1

3. 接⼝的要素

◦ 请求地址 url
◦ 请求⽅法 get/post/rpc/doubbo协议等等;
◦ 请求参数 id
◦ 响应

4. postman接⼝测试

◦ 接⼝⽤例测试

◦ 请求成功

◦ 断⾔/检查
▪ 响应结果断⾔

▪ 响应数据断⾔
▪ 响应时间

三、pytest框架
1. 接⼝测试python常⽤的俩个框架区别

◦ unittest框架必须遵守需要遵守以下规则
▪ 测试⽂件必须先import unittest
▪ 测试类必须继承unittest.TestCase
▪ 测试⽅法必须以“test_”开头
▪ 测试类必须要⽤unittest.main()⽅法

pytest是python的第三⽅测试框架,是基于unittest的扩展框架,⽐unittest更简洁,更⾼效。使⽤pytest必须遵守以下规则

▪ 测试⽂件名必须以“test_”开头,或者“test_”结尾
▪ 测试⽅法必须以“test_”开头
▪ 测试类命名必须以“Test”开头

2. pytest测试框架安装

3. pytest切换

 4. 测试case编写

5. 接⼝⾃动化报告⽣成

◦ ⾸先安装allure:https://www.cnblogs.com/Durant0420/p/15867983.html

◦ 然后allure的使⽤
• pytest --alluredir=report 执⾏测试⽂件中的⽤例
• allure generate report --clean ⽣成测试报告,–clean覆盖之前的报告

6. 接⼝测试过程

◦ 导⼊库⽂件
◦ 发送接⼝请求
◦ 输⼊常量查询条件

◦ 获取接⼝返回结果
◦ 预期输⼊与实际结果⽐对

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

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

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

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

相关文章

燃尽图是什么?如何用它提升敏捷项目流程?

**敏捷项目管理**的核心是透明度和持续改进。燃尽图是轻松实现这两点的秘密武器。这种动态的可视化工具能有效地说明团队在一段时间内的进展情况,突出显示剩余的工作,并揭示你的团队是否在实现目标的正轨上。 敏捷项目管理中的燃尽图 燃尽图是敏捷项目…

mac怎么把两张图片拼在一起

mac怎么把两张图片拼在一起?在如今的生活中,喜欢摄影的朋友们越来越多。拍照已经成为我们的一种习惯,因为当我们遇到美景或迷人的人物时,总是忍不住按下快门,将它们定格。随着时间的推移,我们渐渐发现自己的…

【SQL】统一训练平台数据库实践--20230927

储存过程vlookup_peopledata_csodtraining 默认导出用今天批次的数据进行join on,先删除过渡表的资料,再将查询结果放在过渡表中。 BEGINDECLARE startdate varchar(50);SET startdate date_format(NOW(),%Y%m%d);DELETE FROM season.csod_data2;INSE…

项目04-基于Docker的Prometheus+Grafana+AlertManager的飞书监控报警平台

文章目录 一.项目介绍1.流程图2.拓扑图3.详细介绍 二.前期准备1.项目环境2.IP划分 三. 项目步骤1.ansible部署软件环境1.1 安装ansible环境1.2 建立免密通道1.3 批量部署docker 2 部署nginx、MySQL以及cadvisor、exporter节点2.1 在nginx节点服务器上面配置nginx、node_exporte…

可以动态改变刻度背景色的车速仪表盘

最近做的项目的主页面需要用到一个仪表盘来动态显示车速,同时改变对应的背景色 仪表盘 开始是想着使用echarts,修修改改拿来用,但是人家客户有规定,必须搞个差不多的,那没办法,自 己动手搞个吧 截图如下&am…

如何快速重置模型原点

1、什么是模型原点? 模型原点是三维建模中的概念,它是指在一个虚拟三维空间中确定的参考点。模型原点通常位于模型的几何中心或基本组件的中心位置。如图所示: 可以看到模型的原点在模型的几何中心 2、模型原点的作用 知道了什么是模型原点&…

MR混合现实在军事课堂教学中的应用演示

战场模拟:利用MR技术可以创建逼真的战场模拟环境,将学生置身于真实的战场场景中,可以体验和学习各种作战技巧和战术策略。学生可以通过佩戴MR头盔或眼镜,观察虚拟的场景,并与虚拟对象进行互动,如操作武器、…

人员重识别:Person Re-Identification without Identification via Event Anonymization

论文作者:Shafiq Ahmad,Pietro Morerio,Alessio Del Bue 作者单位:Istituto Italino di Tecnologia;Universita degli Studi di Genova 论文链接:http://arxiv.org/abs/2308.04402v1 内容简介: 1)方向:…

漏洞扫描环境:win10系统用VMware Workstation打开虚拟机若干问题

win10系统用VMware Workstation打开虚拟机若干问题 一 .VMware打开虚拟机就蓝屏重启怎么解决?一. VMware打开虚拟机就蓝屏重启怎么解决?方法一:1、同时按下CTRLSHIFTESC打开任务管理器功能,之后依次点击-详细信息-性能后出现下列界…

【计算机网络】IP协议(上)

文章目录 TCP与 IP之间的关系IP地址的认识协议报头格式1. 报头和有效载荷如何分离?2. 8位协议3. 4位版本4. 8位服务类型5. 16位总长度6. 8位生存时间 TTL 网段划分IP地址的划分 子网划分CIDR的提出如何理解CIDR TCP与 IP之间的关系 如:假设 你上高中时&…

210-课程表III

文章目录 210-课程表III1. 题目 210-课程表III 1. 题目

npm安装心得(依赖库Python及node-sass依赖环境)

在使用vue的开发环境过程中,总会遇到这样哪样的安装或者打包错误, vue运行或打包常见错误如下: 1. npm install时 node-sass npm ERR command failed (可能是node.js的版本和node-sass的版本不符,就是卸掉原来的node.…

第二证券:国庆档票房有望延续复苏态势 海风拐点已至

昨日,两市股指盘中强势轰动上扬,创业板指早盘一度涨近2%,随后涨幅逐渐收窄。到收盘,沪指涨0.16%报3107.32点,深成指涨0.44%报10104.32点,创业板指涨0.82%报2006.22点,两市算计成交7165亿元&…

深入理解 pytest.main():Python 测试框架的核心功能解析

前言 笔者平常运行pytest用例时,通常使用命令行方式,像这样 pytest -v pxl/test_dir/test_demo.py::TestDemo::test_my_var,执行某一条case,但每次命令行敲也挺麻烦的。那如何在python代码中调用pytest呢?带着疑问一…

MySQL面试题-索引的基本原理及相关面试题

先了解一下MySQL的结构 下面我们重点讲一下存储引擎 MySQL的数据库和存储数据的目录是一一对应的,这些数据库的文件就保存在磁盘中对应的目录里 下面我们来看一下对应的具体数据文件 .frm是表的结构,不管什么样的索引都会有 .ibd代表我们现在使用的存…

六、如何让卡片一直对着摄像头

上期我们创建了卡片,那么如何让卡片一直面向浏览器。这个交互有一部分公司还是很需要的,今天我们就来讲讲,先看效果图 在animate.js里面增加卡片Mesh的LookAt,代码如下 import camera from "./camera"; import rendere…

【STM32】IAP升级01 bootloader实现以及APP配置(主要)

APP程序以及中断向量表的偏移设置 前言 通过之前的了解 之前的了解,我们知道实现IAP升级需要两个条件: 1.APP程序必须在 IAP 程序之后的某个偏移量为 x 的地址开始; 2.APP程序的中断向量表相应的移动,移动的偏移量为 x&#xff…

如何制作gif动图gif (多图合成gif、GIF录制软件、视频制作成GIF动图)

文章目录 1 在线制作多图合成gif动画2 GIF录制软件3 将现有的视频 制作成GIF动图 1 在线制作多图合成gif动画 在线制作gif动画链接:https://www.matools.com/gif ①选择需要制作gif动画的图片将其添加 ②调整时间间隔,图片宽高等设置 ③一键生成gif ④下载到本…

两种风格的纯CSS3加载动画

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>加载动画</title><style>.loader {w…

蓝桥杯每日一题2023.9.27

4408. 李白打酒加强版 - AcWing题库 题目描述 题目分析 对于这题我们发现有三个变量&#xff0c;店&#xff0c;花&#xff0c;酒的数量&#xff0c;对于这种范围我们使用DP来进行分析。 dp[i][j][k]我们表示有i个店&#xff0c;j朵花&#xff0c;k单位酒的集合&#xff0c…