接口测试学习笔记
文章目录
- 认识url
 - http协议
 - 接口规范
 - Postman实现接口测试
 - 设计接口测试用例
 - 使用软件发送请求并查看响应结果
 - Postman 自动关联
 - Postman如何提交multipart/form-data请求数据
 - Postman如何提交查询参数
 - Postman 如何批量执行用例
 - 单接口测试
 - Postman 断言
 - Postman参数化
 
- 接口测试自动化
 - request入门
 - 自动化实现
 
认识url
- 互联网上标准资源的地址,一般称为统一资源定位符
 - 组成:协议://hostname:[port]/path/[?查询参数1&查询参数2]
 - 示例:
https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=84053098_3_dg&wd=mysql%20desc&oq=mysql%2520%25E5%25AD%2597%25E7%25AC%25A6%25E4%25B8%25B2%25E9%2595%25BF%25E5%25BA%25A6&rsv_pq=a1182568005b8a7b&rsv_t=c237j3Sa1r6hmKdWk1jv8fDNgTouU%2FaXxVtMvt9hnoX3bPes%2Flk6Xl7H06sI4yAoqIrCAQ&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug3=7&rsv_sug1=7&rsv_sug7=100&rsv_sug2=0&rsv_btype=t&inputT=2953&rsv_sug4=3776- 协议:数据传输的格式,如http、https
 - 服务器地址:域名或ip,示例中是www.baidu.com
 - 端口:一个应用程序对外访问的唯一标识,通常是80(http)、443(https) 协议默认的端口可以默认不写
 - 资源路径:端口号后,?之前的部分
 - 参数:客户端向服务器传递的数据,参数与路径之间用?隔开,多个参数之间用&隔开
 
 
http协议
-  
http:超文本传输协议,基于请求与响应的应用层协议
 -  
作用:规定了客户端与服务器之间的信息传递规范,是二者共同遵守的协议
 -  
组成:
- HTTP请求:定义请求数据格式 
- 请求行、请求头、请求体
 - 常用的请求方法: 
- GET:从服务器获取资源
 - POST:从服务器新建一个资源
 - PUT:从服务器更新资源
 - DELETE:从服务器删除资源
 
 - 请求头:第二行到空白行之间 
- 作用:通知服务器客户端请求信息
 - 特点:键值对,每行一对
 - Content-Type:定义请求体的数据类型 
- text/html:htm格式
 - image/jepg:jpg图片格式
 - application/json:json数据格式
 - application/x-www-form-urlencoded:表单默认的提交数据格式
 
 
 - 请求体:空白行之后的内容 
- 作用:传输数据实体
 - 请求体常在post、put方法中使用
 - 常配合的请求头:Content-Type和Content-Length
 
 
 - HTTP响应:定义响应数据格式 
- 状态行、响应头、响应体
 - 状态行:响应数据的第一行 
- 作用:描述服务器的处理结果
 - 状态行由协议版本号、状态码、状态消息组成
 - 状态码: 
- 1xx:指示信息
 - 2xx:成功
 - 3xx:重定向
 - 4xx:客户端错误
 - 5xx:服务端错误
 
 
 - 响应头: 
- 位置:第二行到空白行之间
 - 作用:描述客户端要使用的一些附加信息
 - 特点:由键值对组成,每行一对
 
 - 响应体: 
- 位置:空行之后
 - 作用:服务器返回的数据实体
 - 特点:由图片、json、xml、html等多种类型
 
 
 
 - HTTP请求:定义请求数据格式 
 -  
常见的状态码:

 
接口规范
为什么要有接口规范?
 为了让前后端开发人员更好的配合,提高工作效率。
 
- 传统接口风格
 
示例:对用户进行操作的相关接口
 
- RESTful:一种网络应用程序的设计风格和开发方式,提供一组设计原则和约束条件
 
示例:
 
特点:
1. 请求api的url用来定位资源
2. 通过标准的http方法,对资源进行增删改查等操作
3. 利用http状态码,返回状态信息
 
- 两种接口风格有什么区别?

 
Postman实现接口测试
设计接口测试用例
1. 提取测试点:
使用功能测试的方法,通过业务流程图,梳理测试点,提取业务路径到xmind中。
 
2. 解析接口文档:
问:为什么要解析接口文档?
答:熟悉接口信息,为设计接口测试用例做准备问:接口文档一般由谁编写?作用是?
答:一般由后端开发编写,用来描述接口信息的文档问:如何进行接口文档解析?
答:1)分析接口之间的依赖关系2)分析接口请求(如 url,请求方法,请求头,请求参数类型,请求参数等)3) 分析接口响应(如 响应状态码,响应数据等)
 
3. 编写测试用例
根据接口文档和提取的业务路径,编写测试用例:
| ID | 模块 | 优先级 | 用例名称 | 接口名称 | 前置条件 | 请求URL | 请求方法 | 请求头 | 请求参数类型 | 请求参数 | 预期结果 | 
|---|---|---|---|---|---|---|---|---|---|---|---|
| … | 
使用软件发送请求并查看响应结果
步骤:
- 设置请求方式
 - 设置接口url
 - 设置请求头
 - 设置请求数据
 - 点击send 发送
 - 查看响应状态码
 - 查看响应数据
 
Postman 自动关联
步骤:
- 在前一个用例的test 中获取响应结果,并设置需要的值为环境变量 
- pm.response.json() 获取响应结果json
 - pm.enviroment.set() 设置环境变量
 
 - 在需要的用例中使用 {{变量名}} 来获取变量值
 
Postman如何提交multipart/form-data请求数据
步骤:
- 设置请求方式
 - 设置接口url
 - 设置请求头
 - 设置请求数据:body->form-data->file->选择上传文件
 - 点击send发送
 - 查看响应状态码
 - 查看响应数据
 
Postman如何提交查询参数
- 方法1:直接在接口url后面跟?查询参数
 - 方法2:设置parameter区域
 
Postman 如何批量执行用例
- 点击测试集中的run按钮,批量执行用例
 - 在弹出的Collection Runner窗口,点击运行
 - 查看测试结果
 
单接口测试
- 分析接口文档,提取测试点 xmind 脑图
 

- 根据测试点,编写测试用例 excel
 
| ID | 模块 | 优先级 | 用例名称 | 接口名称 | 前置条件 | 请求URL | 请求方法 | 请求头 | 请求参数类型 | 请求参数 | 预期结果 | 
|---|---|---|---|---|---|---|---|---|---|---|---|
| … | 
- 使用postman,实现并执行测试用例
 

Postman 断言
- 断言的作用:让工具代替人工,自动判断实际结果跟预期结果是否一致
 - Postman 如何进行断言?
 
# 常用的断言方式有:
# 1、断言响应状态码
pm.test("Status code is 200", function () {pm.response.to.have.status(200);});
# 2、断言响应text是否包含特定文本
pm.test("Body matches string", function () {pm.expect(pm.response.text()).to.include("string_you_want_to_search");});
#3、断言响应json 的某个值,是否与预期结果相等
pm.test("Your test name", function () {var jsonData = pm.response.json();pm.expect(jsonData.value).to.eql(100);});
 
Postman参数化
- 参数化的作用:提高测试脚本的复用性
 - Postman如何实现参数化? 
- 准备数据文件 json文件,每项数据以json形式组织成一个列表,保存在json文件中;
 - 引用数据文件: 
- 请求中使用:{{变量名}}来引用变量
 - 在代码中使用:data.变量名 来引用变量
 
 - 执行用例
 
 
接口测试自动化
自动化测试框架目录结构:
- api:封装接口信息
 - data:存放测试数据
 - script:编写测试脚本
 - common:存放通用工具类
 - report:存放测试报告
 - config.py:定义项目基本配置信息
 - pytest.ini:pytest 配置文件
 
request入门
# 导包
import request
# 发送request请求,并返回响应
# request.请求方法 发送相应的请求,并返回响应结果
# 参数 json 提交json数据;参数headers 提交 headers 数据
response = request.get(url="", json=, headers=)
# 打印响应
print(response.status_code)
print(response.text)
print(response.json())
 
自动化实现
1、封装接口
# 在api文件夹中创建对应接口文件
# 在该文件中对该接口进行封装
# 导包
import request
# 创建接口类
class LoginAPI:# 初始化def __init__(self):# 定义当前接口urlself.image_api = "" # 获取验证码url接口self.login_api = "http:..." # 登录url接口# 封装接口,并获取响应结果def image(self):return request.get(self.image_api)def login(self, login_data):return self.post(self.login_api, json=login_data}
 
2、编写测试用例
# 在script文件夹中创建py文件
# 导包
from api.login import LoginAPI
# 创建测试类
class TestLoginAPI():# setupdef setup():# 实例化接口对象login_api = LoginAPI()# teardowndef teardown():pass# 编写测试用例def test_login_success():pass
 
3、 数据驱动实现
# 导包
import pytest
# 定义数据,每条数据以元祖的形式组织,并通过列表组合起来
test_data = [(1, 2...), ()]
# 在用例前使用pytest的装饰器
@pytest.mark.parameterize("参数1,参数2...", test_data)
def test_login(self, 参数1,参数2...):pass
 
4、json文件实现数据驱动
#将每条数据以json的形式组织,然后通过列表组织起来,放在data文件夹下,保存为xxx.json
编写方法,将json文件读取,并将json列表组织的形式转化为元祖列表组织的形式
结合步骤3,使用pytest的装饰器 @pytest.mark.parameterize 以实现json文件数据驱动
5、config文件使用
congfig文件中保存基本的url 和 项目的路径等基本信息
相关文章:
接口测试学习笔记
文章目录 认识urlhttp协议接口规范Postman实现接口测试设计接口测试用例使用软件发送请求并查看响应结果Postman 自动关联Postman如何提交multipart/form-data请求数据Postman如何提交查询参数Postman 如何批量执行用例单接口测试Postman 断言Postman参数化 接口测试自动化requ…...
一起玩儿物联网人工智能小车(ESP32)——14. 用ESP32的GPIO控制智能小车运动起来(二)
摘要:本文主要讲解如何使用Mixly实现对单一车轮的运动控制。 下面就该用程序控制我们的小车轮子转起来了。打开Mixly软件,然后单击顶部“文件”菜单中的“新建”功能,我们来开启一个新程序的开发工作。 我们的工作同样是先从最简单的开始&am…...
[PyTorch][chapter 8][李宏毅深度学习][DNN 训练技巧]
前言: DNN 是神经网络的里面基础核心模型之一.这里面结合DNN 介绍一下如何解决 深度学习里面过拟合,欠拟合问题 目录: DNN 训练常见问题 过拟合处理 欠拟合处理 keras 项目 一 DNN 训练常见问题 我们在深度学习网络训练的时候经常会遇到下面…...
Nginx快速入门:实现企业安全防护|nginx部署https,ssl证书(七)
0. 引言 之前我们讲到nginx的一大核心作用就是实现企业安全防护,而实现安全防护的原理就是通过部署https证书,以此实现参数加密访问,从而加强企业网站的安全能力。 nginx作为各类服务的统一入口,只需要在入口处部署一个证书&…...
将Go语言开发的Web程序部署到K8S
搭建K8S基础环境 如果已经有K8S环境的同学可以跳过,如果没有,推荐你看看我的《Ubuntu22加Minikue搭建K8S环境》,课程目录如下: Ubuntu22安装Vscode 下载:https://code.visualstudio.com/Download 安装命令&#…...
Python发送数据到Unity实现
Unity设置: 打开Unity项目。创建一个空的GameObject,并附加一个新的脚本TCPReceiver using System.Net; using System.Net.Sockets; using System.Text; using UnityEngine; using System.Threading;public class MyListener : MonoBehaviour {Thread thread;pub…...
Unity 渲染顺序受哪些影响(相机depth、SortingLayer、Render Queue、透明)
目录 相机深度(Camera Depth) Clear Flags 多相机渲染不同部分 SortingLayer 先后顺序 Render Queue Render Queue的作用 Render Queue的分类 GeometryLast(值为2500) 渲染顺序总结 相机深度(Camera Depth&am…...
【论文笔记】Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks
论文地址:Run, Dont Walk: Chasing Higher FLOPS for Faster Neural Networks 代码地址:https://github.com/jierunchen/fasternet 该论文主要提出了PConv,通过优化FLOPS提出了快速推理模型FasterNet。 在设计神经网络结构的时候ÿ…...
python常用函数汇总
python常用函数汇总 对准蓝字按下左键可以跳转哦 类型函数数值相关函数abs() divmod() max() min() pow() round() sum()类型转换函数ascii() bin() hex() oct() bool() bytearray() bytes() chr() complex() float() int() 迭代和循环函数iter() next() e…...
阶段十-物业项目
可能遇到的错误: 解决jdk17javax.xml.bind.DatatypeConverter错误 <!--解决jdk17javax.xml.bind.DatatypeConverter错误--><dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>…...
使用 Jekyll 构建你的网站 - 初入门
文章目录 一、Jekyll介绍二、Jekyll安装和启动2.1 配置Ruby环境1)Windows2)macOS 2.2 安装 Jekyll2.3 构建Jekyll项目2.4 启动 Jekyll 服务 三、Jekyll常用命令四、目录结构4.1 主要目录4.2 其他的约定目录 五、使用GitLink构建Jekyll博客5.1 生成Jekyll…...
【数据库】postgressql设置数据库执行超时时间
在这篇文章中,我们将深入探讨PostgreSQL数据库中的一个关键设置:SET statement_timeout。这个设置对于管理数据库性能和优化查询执行时间非常重要。让我们一起来了解它的工作原理以及如何有效地使用它。 什么是statement_timeout? statemen…...
SQL语言之DDL
目录结构 SQL语言之DDLDDL操作数据库查询数据库创建数据库删除数据库使用某个数据库案例 DDL操作表创建表查看表结构查询表修改表添加字段删除字段修改字段的类型修改字段名和字段类型 修改表名删除表案例 SQL语言之DDL  DDL:数据定义语言,用来定义数…...
hive高级查询(2)
-- 分组查询 SELECT sex,SUM(mark) sum_mark FROM score GROUP BY sex HAVING sum_mark > 555; SELECT sex,sum_mark FROM( SELECT sex,SUM(mark) sum_mark FROM score GROUP BY sex ) t WHERE sum_mark > 555; SELECT AVG(gid),SUM(gid)/COUNT(gid) FROM …...
golang的jwt学习笔记
文章目录 初始化项目加密一步一步编写程序另一个参数--加密方式关于StandardClaims 解密解析出来的怎么用关于`MapClaims`上面使用结构体的全代码实战项目关于验证这个项目的前端初始化项目 自然第一步是暗转jwt-go的依赖啦 #go get github.com/golang-jwt/jwt/v5 go get githu…...
第十五节TypeScript 接口
1、简介 接口是一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要有由具体的类去实现,然后第三方就可以通过这组抽象方法调用,让具体的类执行具体的方法。 2、接口的定义 interface interface_…...
【hadoop】解决浏览器不能访问Hadoop的50070、8088等端口?!
【hadoop】解决浏览器不能访问Hadoop的50070、8088等端口?!😎 前言🙌【hadoop】解决浏览器不能访问Hadoop的50070、8088等端口?!查看自己的配置文件:最终成功访问如图所示: 总结撒花…...
14.bash shell中的for/while/until循环
文章目录 shell循环语句for命令**读取列表中的值****读取列表中的复杂值****从变量读取列表**迭代数组**从命令读取值****用通配符读取目录**C语言风格的shell for循环 shell循环while命令shell 循环的until命令shell循环跳出的break/continue命令break命令continue命令trick 欢…...
RPC(6):RMI实现RPC
1RMI简介 RMI(Remote Method Invocation) 远程方法调用。 RMI是从JDK1.2推出的功能,它可以实现在一个Java应用中可以像调用本地方法一样调用另一个服务器中Java应用(JVM)中的内容。 RMI 是Java语言的远程调用,无法实现跨语言。…...
strlen和sizeof的初步理解
大家好我是Beilef,一个美好的下我接触到编程并且逐渐喜欢。我虽然不是科班出身但是我会更加努力地去学,有啥不对的地方请斧正 文章目录 目录 文章目录 前言 想必大家对sizeof肯定很了解,那对strlen又了解多少。其实这个问题应该让不少人困扰。…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
企业大模型服务合规指南:深度解析备案与登记制度
伴随AI技术的爆炸式发展,尤其是大模型(LLM)在各行各业的深度应用和整合,企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者,还是积极拥抱AI转型的传统企业,在面向公众…...
