当前位置: 首页 > news >正文

接口自动化测试: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. 接⼝测试过程

◦ 导⼊库⽂件
◦ 发送接⼝请求
◦ 输⼊常量查询条件
◦ 获取接⼝返回结果

◦ 预期输⼊与实际结果⽐对

在这里插入图片描述

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

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

相关文章:

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

为什么要做接⼝测试? 只靠前端测试很难确保很⾼的覆盖率。接⼝测试,可以模拟出各种类型的⼊参,包括⼀些在前端模拟不出来的⼊参,还能根据接⼝⽂档的定义,设计出相对完善的⼊参值,在接⼝层保证质量&#xf…...

基于JavaWeb+SpringBoot+Vue医院管理系统小程序的设计和实现

基于JavaWebSpringBootVue医院管理系统小程序的设计和实现 源码获取入口Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏[Java 源码获取 源码获取入口 Lun文目录 目录 1系统概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系统设计思想 1 2相关技术 2 2.1微信小程序 2 2.2 …...

收藏这几个开源库,写css你会笑出声

你是否遇到过写css没灵感,写不出酷炫的效果,那这篇文章你一定要看完。知道这几个开源库,它能让你写出炸天的效果并且有效地增加你的摸鱼时长。 1.CSS Inspiration 网址:https://chokcoco.github.io/CSS-Inspiration/#/ CSS Insp…...

给localStorage缓存添加全局监听器

需求:在做单应用页面的时候,每个组件都是独立的,有时候我们a组件里面的东西修改了,需要b组件进行在a组件修改的同时进行响应,就需要监听器,这种时候我们需要定义监听器并且在b组件里面监听,然后…...

blk_mq_init_queue函数学习记录

blk-mq编程,主要要调用两个函数进行初始化工作,blk_mq_init_queue这是第二个。该函数先是申请了struct request_queue结构,这个请求队列后面用于赋值给磁盘那个结构体的相应成员。 struct request_queue *blk_mq_init_queue(struct blk_mq_t…...

高防服务器的工作原理

在当今互联网时代,网络安全问题日益突出,各种网络攻击层出不穷。为了保护企业的网络安全,高防服务器应运而生。那么,你是否了解高防服务器的工作原理呢?下面就让我们一起来探索一下。 高防服务器是一种能够有效抵御各种…...

2023.11.19使用flask制作一个文件夹生成器

2023.11.19使用flask制作一个文件夹生成器 实现功能: (1)在指定路径上建立文件夹 (2)返回文件夹的路径和建立成功与否的提示 main.py import os from flask import Flask, request, jsonify, render_templateapp F…...

【04】ES6:字符串的扩展

一、模板字符串 模板字符串是可以插入表达式的字符串字面量。模板字符串和传统字符串比较,存在以下特点: 1、使用反单引号 传统字符串字面量使用单引号 ‘’ 或者双引号 “”,模板字符串使用反单引号(backquote) …...

Docker可视化管理界面工具Portainer安装

Portainer是Docker容器管理界面工具,可以直观的管理Docker。 部署也很简单: 官方安装文档地址 1、创建数据卷 docker volume create portainer_data2、下载允许容器 docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restartalways -v /v…...

css实现水波纹效果

css实现水波纹效果 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><styl…...

一种全新且灵活的 Prompt 对齐优化技术

并非所有人都熟知如何与 LLM 进行高效交流。 一种方案是&#xff0c;人向模型对齐。 于是有了 「Prompt工程师」这一岗位&#xff0c;专门撰写适配 LLM 的 Prompt&#xff0c;从而让模型能够更好地生成内容。 而另一种更为有效的方案则是&#xff0c;让模型向人对齐。 这也是…...

8:kotlin 类型检查和转换(Type checks and casts)

在运行时可以执行类型检查以检查对象的类型。类型转换将对象强制转换为不同的类型 is 和 !is 可以使用is或者!is来判断实例是不是指定的类型 fun main() {var obj : Any "cast"if (obj is String) {println(obj.length) // 4}obj 123if (obj !is String) { pr…...

命令模式 (Command Pattern)

定义 命令模式&#xff08;Command Pattern&#xff09;是一种行为型设计模式&#xff0c;它将一个请求封装为一个对象&#xff0c;从而允许用户使用不同的请求、队列或日志来参数化其他对象。命令模式也支持可撤销的操作。主要目的是将命令的发送者和接收者解耦&#xff0c;引…...

蓝桥杯官网练习题(奇怪的数列)

题目描述 从 X 星截获一份电码&#xff0c;是一些数字&#xff0c;如下&#xff1a; 13 1113 3113132113 1113122113 ⋯ YY 博士经彻夜研究&#xff0c;发现了规律&#xff1a; 第一行的数字随便是什么&#xff0c;以后每一行都是对上一行"读出来" 比如第 2…...

flink的异常concurrent.TimeoutException: Heartbeat of TaskManager with id的解决

背景 在使用flink进行集成测试时&#xff0c;我们会使用MiniClusterWithClientResource类&#xff0c;但是当我们断点导致在某个方法执行的时间比较长时&#xff0c;会有错误发生&#xff0c;那么该如何解决这个错误呢&#xff1f; 处理concurrent.TimeoutException: Heartbe…...

火电安全事故vr模拟仿真培训强交互更真实

VR消防&#xff0c;利用VR虚拟现实技术&#xff0c;将VR和消防教育融合在一起达到寓教于乐的效果&#xff0c; VR消防教育是对于家中、校园内、大型商场、公司办公室等情景产品研发的消防安全培训类VR系统软件&#xff0c;根据互动体验、互动、视角实际操作、视听觉系统多度自然…...

ELK企业级日志分析平台

目录 一、elasticsearch 1、集群部署 2、cerebro部署 3、elasticsearch-head插件部署 4、elasticsearch集群角色分类 二、logstash 1、部署 2、elasticsearch输出插件 3、file输入插件 4、file输出插件 5、syslog 插件 6、多行过滤插件 7、grok过滤 三、kibana数…...

.NET面试题1

1.什么是C#&#xff1f; C#&#xff08;读作"C sharp"&#xff09;是一种通用的、面向对象的编程语言&#xff0c;由Microsoft开发。它是一种静态类型语言&#xff0c;支持强类型检查和面向对象编程&#xff08;OOP&#xff09;的概念。C#主要用于开发Windows应用程序…...

mongodb 日志详情

1 mongodb日志简介 MongoDB的日志包括两个主要部分&#xff1a;操作日志&#xff08;oplog&#xff09;和系统日志。 1.1 操作日志 操作日志&#xff08;oplog&#xff09;是一个特殊的集合&#xff0c;用于记录所有对数据库进行的操作&#xff08;如插入、更新和删除&#x…...

Oracle中文显示???????解决办法

项目场景&#xff1a; Oracleoracle中文显示???解决办法 问题描述 原因分析&#xff1a; Oracle中文显示???通常是由于字符集不匹配或者编码问题导致的。当数据库中的数据使用的是某种字符集&#xff0c;而客户端或者应用程序使用的是另一种字符集时&#xff0c;就会出…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...