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

news2024/11/25 4:24:56

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

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

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

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

⼀、接⼝测试流程
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.coloradmin.cn/o/1043136.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

@PostMapping‘ not applicable to type 这个是什么原因

PostMapping’ not applicable to type 这个是什么原因 这个错误的意思是 ‘PostMapping’ 注解没有被正确地应用到一个合适的元素上。在Spring MVC中,PostMapping通常用于注解一个处理HTTP POST请求的方法。 出现这个错误,可能的原因有: …

【STM32】读写内部Flash初步使用

基于stm32f103,作为个人学习记录使用 STM32 芯片内部有一个 FLASH 存储器,它主要用于存储代码,在紧急状态下常常会使用内部 FLASH 存储关键记录; 内部 FLASH 的构成 STM32 的内部 FLASH 包含主存储器、系统存储器以及选项字节区域 大容量…

手机相机系统介绍

目录 一张照片是如何生成的? 相机的成像原理 相机硬件 颜色四要素 相机硬件三大块 模组结构 镜头 镜头光路 镜头常见参数 镜头-FOV&EFL 镜头-焦距 镜头-光圈 图像传感器 图像传感器-像素-底 RGB排布 图像传感器-Pattern & PDAF Sensor CMOS sensor …

Python中的单元测试与代码覆盖率:实践与问题解决

当我们开发软件时,单元测试和代码覆盖率是非常重要的工具。它们可以帮助我们验证代码的正确性,并确保代码的质量和稳定性。在Python中,我们有很多强大的工具和库来进行单元测试和代码覆盖率分析。本文将向你分享在Python中进行单元测试和代码…

C++单例模式各种实现方式,终极版即简单又线程安全,无脑用就完了

📋 前言 🖱 博客主页:在下马农的碎碎念🤗 欢迎关注🔎点赞👍收藏⭐️留言📝✍ 本文由在下马农原创,首发于CSDN📆 首发时间:2023/8/25📅 最近更新时…

学生宿舍管理系统(前端java+后端Vue)实现-含前端与后端程序

界面介绍 登录 ###宿舍管理 ###菜单管理 ###角色管理 ###班级管理

编程每日一练(多语言实现):判断偶数

文章目录 一、实例描述二、技术要点三、代码实现3.1 C 语言实现3.2 Python 语言实现3.3 Java 语言实现 一、实例描述 利用单条件单分支选择语句判断输入的一个整数 是否是偶数。 运行程序,输入一个 整数18, 然后按回车键,将提示该数字是偶数…

性能压力测试的定义及步骤是什么

在今天的数字化时代,软件系统的性能和稳定性对于企业的成功至关重要。为了确保软件在高负载和压力情况下的正常运行,性能压力测试成为了不可或缺的环节。本文将介绍性能压力测试的定义、步骤。 一、性能压力测试的定义和目标 性能压力测试是通过模拟实际…

Spring整合RabbitMQ——生产者

添加依赖坐标,在producer和consumer模块的pom文件中各复制一份。 配置producer的配置文件 配置producer的xml配置文件 编写测试类发送消息

[GXYCTF2019]BabySQli 1

进去就是两个登录框 先试了试adminadmin,然后显示wrong pass 试了下万能密码 1 or 11 查看下页面源代码 放到瑞士军刀解密一下 用fuzz字典跑一下 会发现order被过滤了 所以order用Order来过滤 admin Order by 3-- 得到字段数为3 然后判断一下注入点 判断得到这题…

ESD门禁闸机的用途及优点

ESD门禁闸机是一种专门用于防止静电干扰的门禁设备,其主要用途包括: 防止静电干扰:ESD门禁闸机可以有效地防止静电干扰,保护电子元器件、电路板等敏感设备不受静电破坏。 控制人员进出:ESD门禁闸机可以通过身份验证等…

后端配置(宝塔):处理php禁用函数

一、找到php的文件路径 在软件商店中,找到已安装文件,选择需要更改的php文件,选择“设置” 二、选择需要取消禁用的文件进行删除 扩展:可解决 The Process class relies on proc_open, which is not available on your PHP i nst…

deepin DTK(Development ToolKit)已正式适配 Qt6!

导读近日,深度 deepin 宣布 deepin DTK(Development ToolKit)已正式适配 Qt6 (6.4.2),实现全面升级。 DTK 作为 deepin 基于 Qt 开发的一整套简单且实用的通用开发框架,处于 deepin 操作系统中的核心位置,此…

基于YOLOv8模型的空中视角下车辆检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要:基于YOLOv8模型的空中视角下车辆检测系统可用于日常生活中检测与定位bus、cycle、truck、van、vehicle目标,利用深度学习算法可实现图片、视频、摄像头等方式的目标检测,另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统…

[AFCTF 2018]你能看出这是什么加密么

最开始是我对rsa的小小的理解 rsa也就是非对称加密算法,拥有公开的加密密钥和解密密钥,这也是我们写脚本的基础 选取素数p和q,计算乘积npq,以及(n)(p-1)(q-1)。(欧拉函数) 选择一个e值作为密钥…

组合数4 高精度计算组合数

一般来说需要高精乘和高精除&#xff0c;但化简为质因子形式后只用高精乘。 一个阶乘n中因子p的个数&#xff1a; #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define endl \nusing namespace std;typedef pair<int, int&…

开源一个基于的rt-thread系统的烟感采集系统

一、硬件 CPU&#xff1a;stm32f401 NBIOT模块&#xff1a;移远BC26 存储&#xff1a;W25Q128JVSIQTR 扩展&#xff1a;HC595输出&#xff0c;165输入 二、软件应用 FAL&#xff1a;分区 littlefs: 应用存储用的文件系统 EashFlash&#xff1a;日记存储、系统变量存储 kawaii_…

AP2400 DC-DC降压恒流驱动器 汽车摩托LED大灯电源驱动 全亮半亮瀑闪三功能循环

产品特点 宽输入电压范围&#xff1a;5V&#xff5e;100V 可设定电流范围&#xff1a;10mA&#xff5e;6000mA 固定工作频率&#xff1a;150KHZ 内置抖频电路&#xff0c;降低对其他设备的 EMI干扰 平均电流模式采样&#xff0c;恒流精度更高 0-100%占空比控制&#xff0…

邮件功能-python中的SMTP协议邮件发送

文章目录 一、SMTP协议邮件准备二、smtplib模块1.使用smtplib封装一个邮件类2.发送邮件 补充 一、SMTP协议邮件准备 需要一个smtp服务器 二、smtplib模块 smtplib模块是python自带的模块 1.使用smtplib封装一个邮件类 import smtplib import logging # 加入日志&#xff…

向着趋势奔跑:银行客户中心转型,重构商业模式是关键

随着金融市场化改革的推进 国内银行同业间的竞争日趋激烈 各商业银行在全新的监管要求和市场环境下 纷纷开始推行“以客户为中心”的经营新模式 迅速提升核心竞争力 然而&#xff01;&#xff01;&#xff01; 奇怪的事情发生了 &#x1f447; &#x1f447; &#x1f44…