Postman 接口测试实战教程:从入门到精通,全网最全项目详解
liuian 2025-06-08 22:37 39 浏览
什么是接口?为什么需要接口?
因为接口能使我们的实体或者软件内部数据能够被外部进行修改、查询。从而使得内部和外部实现数据交互,所以,需要用到接口。
软件接口:右称:API(application program interface):微信提现功能调用银联接口实现数据交互。
二、接口返回的数据格式。
接口返回数据的格式:
JSON html xml txt 等等
1.json格式如:
{‘error_code’:40001,msg:'提现成功',data:[具体的数据]}
error_code(code):错误码
msg(message):对错误码的中文说明
data(result):具体的数据
目前80%-90%都会返回这个json格式:
json数据格式是由以下两种数据组成:(可以互相嵌套)
a.字典,{键值对}
b.数组:[12,13,14]
验证json格式以及可以做加密和解密:在线JSON校验格式化工具(Be JSON)
2.xml格式如:
<xml>
<error_code>40001</error_code>
<msg>提现成功</msg>
<data>具体的数据</data>
</xml>
3.html格式如:
<html>
<head>
<title></title>
</head>
<body></body>
</html>
三、接口协议信息全面系统讲解
http请求信息由三部分组成:
1、请求方法URL协议/版本(start line 起始行),例如 get put POST / HTTP/1.1 POST代表请求方法,/代表的是URL根目录, HTTP/1.1代表协议和协议的版本,目前流行的协议就是HTTP/1.1
2、请求头(Headers),可以把请求头部信息看做配置信息,所以比较灵活,是一些键值对的形式存在。
HTTP响应
相比较于http请求,对于http响应我们的关注点一般是它的status code 也就是我们常说的状态码和body信息,响应消息的第一行为下面的格式:
HTTP-Version Status-Code Response-Phrase例如
HTTP/1.0 200 ok
状态码是一个三位数字的结果代码,第一个数字可能取5个值,在实际生产过程中,结果比较多的多以2,3,4,5开头,3重定向响应类较少,不过在接口测试中可能会遇到,具体的区别如下
1xx:信息响应类,表示接收到请求并且继续处理
2xx:处理成功响应类,表示动作被成功接收、理解和接受
3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理
4xx:客户端错误,客户请求包含语法错误或者是不能正确执行
5xx:服务端错误,服务器不能正确执行一个正确的请求
四、企业当中项目开发如何做接口测试以及接口测试流程和规范?
1.得到api接口文档(开发人员提供),熟悉接口业务,接口地址,鉴权(签名,秘钥),入参,出参(返回报文),错误码(状态码)。接口测试也是基于业务开展,所有的接口都是来源于业务,业务模块进行拆分,拆分成不同的接口(用户信息:登录接口 、注册接口、用户信息查询接口、用户信息编辑)
2.编写接口测试计划方案以及评审(有多少个接口、接口测试采用什么技术、人力分配、执行时间)。
3.编写接口测试用例以及评审
4.使用接口测试工具执行接口测试(测试用例脚本编写,调试、执行)
5.输出接口测试报告。
五、postman接口测试工具介绍
1、Postman是一个可扩展的API开发和测试协同平台工具。
2、Postman由谷歌公司研发,以前只是谷歌浏览器的一个插件,后发布了客户端,已有1000万+用户正在使用posman工具。
3、postman 这个工具还可以进行性能测试 接口自动化测试。
六、postman接口测试工具的特点和优势
- postman只做http/https协议的接口的测试,是一种最广泛REST(JSON)接口测试客户端软件。
- postman是一个接口的开发和测试的全流程支持软件。
- 支持前端开发:mock测试
- 支持后端开发:接口测试、开发接口文档
- 支持测试:接口测试(性能 自动化测试)
- 支持运维:监控功能(运维人员)
七、postman下载和安装
下载地址:https://www.postman.com/
获取方式一:
https://www.postman.com/home 由于是国外的网站,需要翻墙VPN google 开发 用的是国外的域名
百度网盘获取方式二:
链接:
https://pan.baidu.com/s/1WMIKpjBLxHQn8OsvbyfUZQ
提取码:53pp
官方下载是最新版(英文版)
选择不同的操作系统进行下载
直接操作下载
八、注册postman账号
安装完成之后 下一步需要做的就是注册账号操作
① 打开postman,点击【创建账号】或【登录】,会跳转到浏览器,跳转到postman 网站
② 若已有账号可以直接登录;若无账号,则创建新账号
如果有google 账户,可以直接通过google 邮箱账号进行登录,国内QQ 邮箱也是可以注册的。
需要记住用户名 和密码 方便下一次 不同电脑进行登录。
浏览器登录成功,可以把用户的登录信息 同步给客户端。
③ 若登录成功会弹出提示框,点击“打开postman”,即可在postman客户端登录成功
④ 稍等一会,登录成功,我们点击Workspaaces来到自己的工作空间
九.postman 主界面功能简介
1:顶部菜单
1:三:菜单按钮有一些常用的菜单
①:file:文件(主要是一些基本功能,快捷打开一些窗口之类的操作) ②:edit:编辑(主要是复制粘贴撤销等基本操作)
③:view:视图(主要是对于屏幕页面的控制(放大,缩小,前进,后退等)) ④:help:帮助(主要是检查版本更新,清除缓存和连接github的菜单等)
2:Home:主要是跳到个人主页上,包括提醒,工作区等信息,也可以选择不同的工作空间,以及当下主流项目的一些接口介绍
3:Workspace:工作区域。是Postman 最主要的功能。API 管理和API 测试功能。其中有个人的工作区域还有团队的工作区域可以分享和邀请成员.
4:API Network:api网络 主要是区分,私有网络,公共网络,以及合作方网络。一些项目需要在专门的网络下进行
5:Explorer:探索:查看关于Postman的公共api、团队、工作区和集合。一些比较流行的api接口
6:search postman:搜索一些请求,和用例集等
7:Invite:邀请成员:如果你是个管理角色,可以邀请你们团队成员加入。 8:settings:设置:主要设置一些请求,参数,证书等
9:Notifications:消息:查看来自团队的活动,Postman更新的通知,查看拉请求、评论活动和其他重要信息。
10:Manage accounts:账户:自己的登录账户所在的地方
11:Upgrade:升级:主要是一些资源的使用情况
2:中间操作菜单
1:Collections:集合,就是一组API的集合,相当于是一个综合的板块,下面可以创建包,创建各种请求
2:APIs:管理API的地方,可以创建>定义>测试>部署>监控api,和collections的作用其实差不多
3:Environments ----管理API 执行环境的地方,有全局变量和环境变量应对一些请求不断变化 本地环境 预发布环境 测试环境 正式环境
4:Mock servers ----设置Mock 服务器的地方,主要是为了联调测试,不拖慢测试的进度
5:Monitors:定期运行集合,以检查其性能和响应,可以定时监控一些请求和流程 运维人员服务端进行监控 并且发出预警
6:Flows ----过拖放UI连接一系列请求,从而创建API工作流
7:History ----工作空间中发送的任何请求都将出现在这里。
3:底部菜单
1:find and replace: 可以批量查找整个工作空间的某一内容,并迅速替换为自己想要的内容
2:console:控制台:主要是看自己控制台的一些日志或者是报错打印信息的地方
3:Runner:就是集合的执行器,可以批量执行一些请求,通常用于一些业务的主流程的测试
4:Capture requests:俗称抓包,postman不是一个专业的抓包工具,建议使用charles
5:Cookies:查看,管理或者同步Cookies
6:Trash:恢复或永久删除任何已删除的集合
7:Two-pane view 双窗格视图在单窗格视图和双窗格视图之间进行切换。
十.高频常用功能接口请求全面系统讲解
十一、接口响应区域功能全面系统讲解
向服务器端发送请求,发送请求之后会返回响应结果给postman客户端
1:body:响应体 Pretty:响应展示的视图格式化显示:JSON,XML,HTML,Text,Auto这几种类型的响应;
Raw:响应的原始文本,未格式化的;
Preview:视图:一些html的响应方便查看;
Visualize:可视化:一些图片验证码的响应就可以在此处查看;
2:cookies:当响应中有cookies时会在这里显示;
3:headers:响应头:展示响应头的信息;
4:test results:测试结果:当在请求中有断言的时候,测试的结果会在此处展示;
十二、postman创建集合目录的使用
一般情况下,我们会按照以下结构创建:
一个集合:项目名称作为集合名
多个目录:按照模块划分目录,可以嵌套多级,最后一个级别是“接口”
大概会变成以下结构:
十三、断言技术讲解
性能测试 Jmeter 自动化测试 也会用到断言技术。
通过断言能够自动判断业务逻辑是否正确,一般可以采用对响应的状态码、响应的正文进行判断,还可以采用响应头部的一些字段来断言。
在接口测试中,断言也是必须的,没有断言的话,只是把请求发出去,不知道处理的对不对(接口实功能实现对不对)。
在当前请求发送之后要处理的脚本,是作为断言来使用的。
发送完当前请求之后,对响应的结果进行判断、断言
断言的内容可以是:响应正文、响应状态码、响应头部的字段呢?响应时间等
响应正文断言:包含子字符串(掌握)和json断言(掌握)
其他断言方式了解:响应状态码断言、响应时间断言等
//实现断言,是在当前请求发送完成之后,得到响应结果才能进行的。
//1、判断响应状态码是否符合预期,并不能完全确定业务是否是正确的
pm.test("响应状态码是200?", function () {
//实现判断语法
//pm.response: http的响应报文(四大组成部分)
// to.have.status(200):是否包含状态码200呢?
pm.response.to.have.status(200);
});
pm.test("断言响应结果字段是", function ()
{ var jsonData = pm.response.json();
pm.expect(jsonData.msg).to.eql("操作成功"); });
对数据格式断言
/* response has this structure: { "name": "Jane", "age": 29, "hobbies": [ "skating", "painting" ], "email": null } 备注:要根据响应的具体类型去提取参数 const jsonData = pm.response.json(); pm.test("测试响应文本的数据类型", () => { pm.expect(jsonData).to.be.an("object"); pm.expect(jsonData.name).to.be.a("string"); pm.expect(jsonData.age).to.be.a("number"); pm.expect(jsonData.hobbies).to.be.an("array"); pm.expect(jsonData.website).to.be.undefined; pm.expect(jsonData.email).to.be.null;});
//了解就行
tests["响应状态码是否为200?"] = responseCode.code === 200;
// 2、响应正文做断言(重点掌握)
// 以字符串格式的正文形式断言(都行)
// 大串(实际结果)包小串(预期结果)。
// pm.response.text():将响应报文中的正文部分转化为字符串格式
pm.test("大串包小串??", function () {
pm.expect(pm.response.text()).to.include("用户名不符合格式要求");
});
//responseBody :获取的是响应正文
tests["响应正文包括指定字符串?"] = responseBody.has("用户名不符合格式要求");
// 以json格式的正文进行i断言(响应报文头部的content-type为json的可以用)
//直接使用json断言
pm.test("Your test name", function () {
var jsonData = pm.response.json();
console.log(jsonData.trans_result[0].dst)
pm.expect(jsonData.trans_result[0].dst).to.eql("苹果");
});
//响应时间:从发出请求,到接收到响应结果的时间差就是响应时间,是接口的一个性能指标
// 假设要求,该请求响应时间不应该高于200ms
pm.test("响应时间的判断:", function () {
//pm.response.responseTime:实际的响应时间
// to.be.below:低于某个指定的值
pm.expect(pm.response.responseTime).to.be.below(400);
});
十四、接口测试项目实战测试点讲解
十五、项目实战请求接口(URL、协议,请求头信息)介绍
有一些URL 地址是域名 https://www.csdn.net/
有一些URL 地址是IP,有时候测试环境IP ,因为域名需要申请和备案
tomcat 8080
get 请求方式 参数直接加在URL 地址里面
如果端口=80 可以不用写,http 默认端口=80
1、URL
URL:是互联网上标准资源的地址,一般称为统一资源定位符。
●组成:协议 :// hostname[:port]/path/[? 查询参数1 & 查询参数2]
示例:
http://kdtx-test.itheima.net:8080/contract/details?id=449280106&pageType=info
协议:数据传输的格式。如:http、https等
端口:一个应用程序对外访问的唯一标识常用:80(http)、443(https)
参数:客户端向服务器传递的数据
②参数与路径之间用“?”符号隔开日多个参数用“&”符号隔开
提示:协议默认端口可以省略
服务器地址:域名或IP
路径:主机资源的具体地址。包括目录和文件名等,用“/”隔开
十六、项目实战请求接口(http请求-请求体、响应状态行)介绍
十七、获取登录验证uuid脚本开发和调试实战
登录之前,需要进行授权,先获取用户的UUID 信息才可以验证登录接口,后面所有的接口都需要用到这个UUID,登录的盾牌
https://kdtx-test.itheima.net/api/captchaImage
请求方式:get
十八、登录接口脚本开发和调试实战
3、登录接口调试-登录
需求:
使用Postman访问验证码接口,并查看响应结果。
说明:
地址
:http://kdtx-test.itheima.net/api/login
方法:Post
请求数据:
请求头
:Content-Type:application/json
请求体:{"username":"manager","password":"123456","code":"","uuid":"验证码接口返回结果中的数据值”)
实现步骤:
设置请求方式
输入接口地址
点击发送请求
查看响应结果
请求地址
URL:http://kdtx-test.itheima.net/api/login
请求方式:post
请求头设置
Content-Type:application/json
请求体:
{
"username":"admin",
"password":"HM_2023_test",
"code":"2",
"uuid":"69dc1d2e2e1b45438692703bf65a14c2"
}
uuid 来源于
https://kdtx-test.itheima.net/api/captchaImage 需要把获
取UUID
中复制到这个中间的参数
响应结果
{
"msg": "操作成功",
"code": 200,
"userId": 1,
"token": "eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjU2MjkzZjQ5LWM3OWEtNDdlMC04NWE3LTQzMjRiMzFkYzQzZiJ9.Z-MbjHrRG9cHatG2Xfn78kcpU_N7BQS0mvfn7S6shkQEjdvpCz_05QhrLrrzk7pQKP0NLKTOj-DcTHNG0JBM6Q"
}
十九、自动关联技术之登录接口自动关联数据项目实战
每次都需要手动复制UUID
自动关联技术,把上一个请求返回的报文值,作为下一个请求的请求参数
获取UUID请求返回的值,作为登录接口UUID 的参数
获取验证码UUID代码
var jsonDate = pm.response.json();
pm.environment.set("uuid",jsonDate.uuid);
登录成功接口代码 使用自动关联技术实现
{
"username":"admin",
"password":"HM_2023_test",
"code":"2",
"uuid":"{{uuid}}"
}
新增环境变量
选择新增的环境变量
响应结果
{
"msg": "操作成功",
"code": 200,
"userId": 1,
"token": "eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjgwMzUzZGU4LWJhODYtNDUxZS05ZmRmLWY2NWRjMGU1Y2M4MCJ9.m9YvpY9SOw1lp2YgR0y-0_xvkhMLXhLeogOeKA3MB32QEyV708guiMjask2vptxJ2Rasab-SWLEDq64kgWib9A"
}
相关推荐
- 教你把多个视频合并成一个视频的方法
-
一.情况介绍当你有一个m3u8文件和一个目录,目录中有连续的视频片段,这些片段可以连成一段完整的视频。m3u8文件打开后像这样:m3u8文件,可以理解为播放列表,里面是播放视频片段的顺序。视频片段像这...
- 零代码编程:用kimichat合并一个文件夹下的多个文件
-
一个文件夹里面有很多个srt字幕文件,如何借助kimichat来自动批量合并呢?在kimichat对话框中输入提示词:你是一个Python编程专家,完成如下的编程任务:这个文件夹:D:\downloa...
- Java APT_java APT 生成代码
-
JavaAPT(AnnotationProcessingTool)是一种在Java编译阶段处理注解的工具。APT会在编译阶段扫描源代码中的注解,并根据这些注解生成代码、资源文件或其他输出,...
- Unit Runtime:一键运行 AI 生成的代码,或许将成为你的复制 + 粘贴神器
-
在我们构建了UnitMesh架构之后,以及对应的demo之后,便着手于实现UnitMesh架构。于是,我们就继续开始UnitRuntime,以用于直接运行AI生成的代码。PS:...
- 挣脱臃肿的枷锁:为什么说Vert.x是Java开发者手中的一柄利剑?
-
如果你是一名Java开发者,那么你的职业生涯几乎无法避开Spring。它如同一位德高望重的老国王,统治着企业级应用开发的大片疆土。SpringBoot的约定大于配置、SpringCloud的微服务...
- 五年后,谷歌还在全力以赴发展 Kotlin
-
作者|FredericLardinois译者|Sambodhi策划|Tina自2017年谷歌I/O全球开发者大会上,谷歌首次宣布将Kotlin(JetBrains开发的Ja...
- kotlin和java开发哪个好,优缺点对比
-
Kotlin和Java都是常见的编程语言,它们有各自的优缺点。Kotlin的优点:简洁:Kotlin程序相对于Java程序更简洁,可以减少代码量。安全:Kotlin在类型系统和空值安全...
- 移动端架构模式全景解析:从MVC到MVVM,如何选择最佳设计方案?
-
掌握不同架构模式的精髓,是构建可维护、可测试且高效移动应用的关键。在移动应用开发中,选择合适的软件架构模式对项目的可维护性、可测试性和团队协作效率至关重要。随着应用复杂度的增加,一个良好的架构能够帮助...
- 颜值非常高的XShell替代工具Termora,不一样的使用体验!
-
Termora是一款面向开发者和运维人员的跨平台SSH终端与文件管理工具,支持Windows、macOS及Linux系统,通过一体化界面简化远程服务器管理流程。其核心定位是解决多平台环境下远程连接、文...
- 预处理的底层原理和预处理编译运行异常的解决方案
-
若文章对您有帮助,欢迎关注程序员小迷。助您在编程路上越走越好![Mac-10.7.1LionIntel-based]Q:预处理到底干了什么事情?A:预处理,顾名思义,预先做的处理。源代码中...
- 为“架构”再建个模:如何用代码描述软件架构?
-
在架构治理平台ArchGuard中,为了实现对架构的治理,我们需要代码+模型描述所要处理的内容和数据。所以,在ArchGuard中,我们有了代码的模型、依赖的模型、变更的模型等,剩下的两个...
- 深度解析:Google Gemma 3n —— 移动优先的轻量多模态大模型
-
2025年6月,Google正式发布了Gemma3n,这是一款能够在2GB内存环境下运行的轻量级多模态大模型。它延续了Gemma家族的开源基因,同时在架构设计上大幅优化,目标是让...
- 比分网开发技术栈与功能详解_比分网有哪些
-
一、核心功能模块一个基本的比分网通常包含以下模块:首页/总览实时比分看板:滚动展示所有正在进行的比赛,包含比分、比赛时间、红黄牌等关键信息。热门赛事/焦点战:突出显示重要的、关注度高的比赛。赛事导航...
- 设计模式之-生成器_一键生成设计
-
一、【概念定义】——“分步构建复杂对象,隐藏创建细节”生成器模式(BuilderPattern):一种“分步构建型”创建型设计模式,它将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建...
- 构建第一个 Kotlin Android 应用_kotlin简介
-
第一步:安装AndroidStudio(推荐IDE)AndroidStudio是官方推荐的Android开发集成开发环境(IDE),内置对Kotlin的完整支持。1.下载And...
- 一周热门
-
-
【验证码逆向专栏】vaptcha 手势验证码逆向分析
-
Psutil + Flask + Pyecharts + Bootstrap 开发动态可视化系统监控
-
一个解决支持HTML/CSS/JS网页转PDF(高质量)的终极解决方案
-
再见Swagger UI 国人开源了一款超好用的 API 文档生成框架,真香
-
网页转成pdf文件的经验分享 网页转成pdf文件的经验分享怎么弄
-
C++ std::vector 简介
-
飞牛OS入门安装遇到问题,如何解决?
-
系统C盘清理:微信PC端文件清理,扩大C盘可用空间步骤
-
10款高性能NAS丨双十一必看,轻松搞定虚拟机、Docker、软路由
-
python使用fitz模块提取pdf中的图片
-
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)
- mysql刷新权限 (34)