Postman接口测试工具最全实用教程

news2024/11/15 19:58:32

一、postman简介

1、postman的特点

  • postman只做http协议的接口的测试,是一种最广泛REST接口测试客户端软件。
  • postman支持http协议的所有请求方式,包括get、post、head、put、delete等。
  • postman支持各种额外的头部字段的添加。
  • postman除了可以模拟普通表单数据外,还支持文件、图片、视频等数据请求。
  • postman是一个接口的开发和测试的全流程支持软件。
  • 支持前端开发:mock测试
  • 支持后端开发:接口测试、开发接口文档
  • 支持测试:接口测试
  • 支持运维:监控功能
  • postman支持云服务:随时随地都能无缝对接加班。
  • 数据同步功能,家里、办公室的电脑登录同一账号,数据即可同步。
  • 团队协作,你设计的请求可以团队内的推送,交给其他人执行或继续开发。

广告

接口自动化测试持续集成 Postman Newman Git Jenkins

京东

¥45.50

去购买​

2、安装postman

建议官网下载postman最小版本。

https://www.postman.com/downloads/

根据自己使用系统,下载对应的平台版本,默认安装即可。

3、注册和登录

4、第一个接口测试

百度翻译接口的实现:是一个get类型的请求

https://fanyi-api.baidu.com/api/trans/vip/translate?q=apple&from=auto&to=zh&appid=&xxxxsalt=888888&sign=a9adc2d687fbacecc3b5059b9ccedc95

1)创建一个工程目录

如果没有特别的要求,只需要创建一次即可。

2)在工程目录下创建一个collection集合

collection是postman管理接口请求的基本单位,首先就是把他创建出来。

3)创建一个接口请求(接口用例)

新建请求,重命名为baiduTest01:

4)拼装一个接口请求参数

对于一个get请求来说,需要三部分内容:

请求地址 :

https://fanyi-api.baidu.com/api/trans/vip/translate

请求方式:get

请求参数(params)

5) 断言

后续细讲。

6)发送请求

点击url地址栏后面的send按钮。

二、postman进行接口测试的流程

1、获取请求的基本参数

  • 做接口测试,基本上就是手动打包http请求报文,你要知道请求报文到底有哪些内容。
  • 接口的url地址:找到接口所在的服务器及资源(一个文件夹或者一个文件、接口)
  • 接口的请求方式:get、post等
  • 必须的请求头部:(content-type、referer、cookie等)
  • 请求参数(querry string parameters):可以单独存放,也可以拼接在url地址后面
  • 请求的正文数据

怎么获取这些个参数:

1)有专门的接口文档,通过这个文档就能获取上面的参数

2)通过抓包工具获取(浏览器、fiddler等)

2、设计测试用例

按照指定的用例模板,依据接口的参数,采用等价类、边界值、参数组合(有的参数必选、可选等)形参请求数据,整理响应其他参数(url、请求方式等)和预期结果(断言),形成测试用例。

3、通过postman工具拼接请求

根据测试用例,将postman中的请求拼接出来,并send发送,查看结果。

创建collection-->request(请求,或者接口用例)

4、断言

通过断言能够自动判断业务逻辑是否正确,一般可以采用对响应的状态码、响应的正文进行判断,还可以采用响应头部的一些字段来断言。

在接口测试中,断言也是必须的,没有断言的话,只是把请求发出去,不知道处理的对不对(接口实功能实现对不对)。

三、使用postman进行HTTP接口测试

1、get请求

get请求不需要有请求的正文数据的,其他都要(url和请求方式必须,可选的是头部字段)。

1)百度翻译接口

自己再去做一遍即可。

请求地址:

url:https://fanyi-api.baidu.com/api/trans/vip/translate

请求方式:get

params:q=apple&from=auto&to=zh&appid=xxxxx&salt=888888&sign=a9adc2d687fbacecc3b5059b9ccedc95

2)B站视频最新评论接口

url:https://api.bilibili.com/x/v2/reply/main

请求方式:get

params: callback=jQuery17207775567550413909_1655259544202&jsonp=jsonp&next=0&type=1&oid=248143527&mode=2&plat=1&_=1655259574655

在postman中实现上述的参数,形成参数用例:

视频类的网站都有一个防盗链功能,就算抓到了请求的基本参数,你也不能通过工具获取评论的参数,其实是通过一个头部字段进行的限制,这个字段就起到了防盗链的作用。

referer:一般只是当前视频所在的地址,用它做防盗链的作用,必须指定referer,而且referer的值和当前视频的地址一致,你才有权限获取评论信息。

至于使用哪一个字段来做防盗链,开发设计的,只不过使用referer的居多。

解决方法:

postman的header标签下,添加一个头字段referer(可以抓包获取)。

2、post请求--x-www-form-urlencoded

除了get所需的所有参数(请求方式、请求地址、请求头部等),还需要请求正文数据。

1)百度翻译

使用post请求实现百度翻译功能,content-type一定是x-www-form-urlencoded

https://fanyi-api.baidu.com/api/trans/vip/translate?q=apple&from=auto&to=zh&appid=xxxxxx&salt=888888&sign=a9adc2d687fbacecc3b5059b9ccedc95

请求地址:

https://fanyi-api.baidu.com/api/trans/vip/translate

请求类型:post

请求正文:

  • q:apple
  • from:auto
  • to:zh
  • appid:xxxxx
  • salt:888888
  • sign:a9adc2d687fbacecc3b5059b9ccedc95
  • 请求头部:content-type:x-www-form-urlencoded

2) 电商前台的注册接口

特点是post请求,content-type要求是以x-www-form-urlencoded。

请求的地址:

http://xxxxx/qftest/index.php?c=user&a=register&step=submit

请求的方式:post

请求的参数:拼接在地址栏了

请求的数据:

  • username: 给一个已注册的数据、空、4位、数字开头、正常未注册等
  • email
  • password
  • repassword
  • agree

请求的头部:content-type:application/x-www-form-urlencoded

3)电商登录接口

请求地址:

http://xxxxx/qftest/user/login.html?step=submit

请求方式: post

请求正文:

  • username:bk2201_00001
  • password:200c6d94e583e62c6964de3acdc723e5

请求头部:content-type:application/x-www-form-urlencoded

3、post请求--form-data

content-type类型位form-data,数据传输仍然是键值对,数据类型可以是文件(word、excel、图片、视频等)。

1)蜜锋OA系统登录功能--urlencoded

请求url:

http://xxxxx/MiFengOA/index.php?a=check&m=login&d=&ajaxbool=true&rnd=607798

请求方式:post

请求的数据:

请求头部:content-type: x-www-form-urlencoded

2)蜜锋OA系统上传图片的功能--form-data

只有登录成功之后才能够上传图片,登录失败(没有登录)不能上传。

请求地址:

http://xxxxx/MiFengOA/index.php?a=upfile&m=upload&d=public&maxsize=80&uptype=image&thumbnail=150x150&ajaxbool=true&rnd=322198

请求方式:post

请求数据:file: (binary)

请求头部:content-type:multipart/form-data

3) 多接口的实现-cookie的使用

cookie作为一种鉴权的方式,登录某个系统之后,再次访问系统的不同页面,都能保持登录状态,就是因为后续的所有请求都携带了cookie的参数。

第一次登录成功,postman或者浏览器,可以将登录所用的用户名及密码等记录在本地。

再在访问其他接口的时候,浏览器发出的请求就会自动化从cookie管理器中携带和当前主机相关的cookie及值,这样就一直保持了登录状态。

在postman中的两个请求,登录和上传签名。

如果希望通过postman的cookie管理器,来共享cookie值,就可以调整他俩的现后执行顺序即可,先登录再上传即可,每次都能动态获取最新的cookie值,一般不会出错。

如果不想使用cookie管理器,不想先登录怎么办,只能手动给上传接口添加一个cookie参数,应为cookie是有时效性的,过一段时间就不能用了。

4、post请求-content-type:application/json

json数据结构作为请求的正文数据及响应正文数据是最常见的用法,将来大家接触的80%都是这种格式的。

将来项目中json数据会更复杂、内容会更多,上百行数据都很正常。

住逻辑的登录的接口来演示。

请求地址:

https://xxx/designer_api/account/login_quick

请求的方式:post

请求的数据:

{"phone":"xxx","code":"123456","messageType":3,"key":"a2088d42-2eb0-4194-aada-e3a0019ed5f1","registration_type":1,"channel":"zhulogic","unionid":""}

请求的头部

Content-Type:application/json;charset=UTF-8

四、变量的使用

1、环境变量

主要用于环境迁移。

postman中支持两种环境,一种是全局的环境变量、另一种是局部的环境变量。

  • 全局的环境变量:只有一组,就是global环境,所有的集合和请求可以共享这个环境的变量。
  • 局部的环境变量:environment环境,可以设置多组,需要指定给集合或者请求才能使用。

场景:假设我们一个系统有500条接口请求,突然有一天服务器的地址更换了(测试环境迁移到预发布环境中去),这时候需要把500个请求中的主机名部分更换一遍。

而全局环境及局部环境的变量就可以解决这种耗时的任务。

1)globals全局环境设置

2)environment局部环境设置

2、集合collection变量

绑定在集合上的变量,只能给集合下的请求使用。

然后在该集合中就可以直接使用{{password}}来参数化数据了。

注意:不能跨集合使用。

五、预处理和断言

这两个模块采用的是js语法脚本。

1、预处理 -pre-request script模块

在当前请求发送之前要处理的脚本,我们能做点什么事情?

用于处理请求数据(获取、设置、加密等)

在发送当前请求之前发送另外一个请求(OA的登录和上传图片)。

1)发送一个get请求

2)获取参数(全局环境、局部环境、集合变量)

 总结

如果你对此文有任何疑问,如果你也需要接口项目实战,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入我们,加入方式在文章的最后面

  自动化测试相关教程推荐:

2023最新自动化测试自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂!!_哔哩哔哩_bilibili

2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibili

测试开发相关教程推荐

2023全网最牛,字节测试开发大佬现场教学,从零开始教你成为年薪百万的测试开发工程师_哔哩哔哩_bilibili

postman/jmeter/fiddler测试工具类教程推荐

讲的最详细JMeter接口测试/接口自动化测试项目实战合集教程,学jmeter接口测试一套教程就够了!!_哔哩哔哩_bilibili

2023自学fiddler抓包,请一定要看完【如何1天学会fiddler抓包】的全网最详细视频教程!!_哔哩哔哩_bilibili

2023全网封神,B站讲的最详细的Postman接口测试实战教学,小白都能学会_哔哩哔哩_bilibili

  总结:

 光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

​​​

​​​

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!

 

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

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

相关文章

chat-plus部署指南

目录 1.下载代码 2.启动 3.测试 1.下载代码 cd /optwget https://github.com/yangjian102621/chatgpt-plus/archive/refs/tags/v3.2.4.1.tar.gz 2.启动 cd /opt/chatgpt-plus-3.2.4.1/deploydocker-compose up -d 3.测试 管理员地址xxx:8080/admin 账号密码admin/admin1…

java流程控制-给个一件三连呗!✨✨✨✨✨

接下来我们来看流程控制方面的知识 文章目录 1.Scanner类的使用1.1 使用next()进行接收1.2 nextLine()1.3 hasNext()1.4 scanner.nextInt() 2.选择结构2.1 if...else....语句2.2 if....else if....else...语句2.3 switch() case...语句 3.循环结构3.1for 循环:3.2w…

ES索引原理

ES在检索时底层使用的就是倒排索引,正向索引是通过key找value,反向索引则是通过value找key。 索引会分为两个区域:索引区和元数据区。数据是这样存储在里面的: 简单理解就是:当要录入一条数据时,首先会将完…

Linux之Iptables简易应用

文档形成时期:2009-2024年 和iptables打交道有15年了,经过无数实践后,形成一个简易应用文档。 文档主题是简易应用,所以其原理不详述了。 因软件世界之复杂和个人能力之限,难免疏漏和错误,欢迎指正。 文章目…

伴随矩阵定义和计算

一、伴随矩阵定义 1)代数余子式 代数余子式也很好理解,在余子式的基础上多了一个-1的次方而已。 2)余子式 余子式很好理解,就是除了这个元素,出去该行该列剩下的行列式的值。 求每个元素的代数余子式,按行求&#xf…

关于白盒测试,这些技巧你得游刃有余~

对于很多刚开始学习软件测试的小伙伴来说,如果能尽早将黑盒、白盒测试弄明白,掌握两种测试的结论和基本原理,将对自己后期的学习有较好的帮助。今天,我们就来聊聊黑盒、白盒测试的相关话题。 1、黑盒测试的方法和小结 最常见黑盒…

【C++】:C++中的STL序列式容器vector源码剖析

⛅️一 vector概述 vector的使用语法可以参考文章:​ 总的来说:vector是可变大小数组 特点: 支持快速随机访问。在尾部之外的位置插入或删除元素可能很慢 元素保存在连续的内存空间中,因此通过下标取值非常快 在容器中间位置添加…

SpringIOC之support模块GenericApplicationContext

博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+…

【Spring 篇】基于注解的Spring事务控制详解

嗨,亲爱的读者朋友们!欢迎来到这篇关于基于注解的Spring事务控制的博客。如果你曾为事务处理而头痛,那么这里将为你揭开事务的神秘面纱。我们将一步步深入探讨Spring事务的世界,用简单易懂的语言、充满情感色彩的文字,…

fastadmin 框架如何移除图片上传后预览中的删除按钮

在FastAdmin中,当我们启用了图片上传预览时,在预览区域会自动生成预览图和删除按钮,如下图: 如果我们想上移除掉这里的删除按钮,则需要启用自定义预览模板的功能。 首先我们找到视图中我们的预览容器,比如…

C++内存管理机制(侯捷)笔记4(完结)

C内存管理机制(侯捷) 本文是学习笔记,仅供个人学习使用。如有侵权,请联系删除。 参考链接 Youtube: 侯捷-C内存管理机制 Github课程视频、PPT和源代码: https://github.com/ZachL1/Bilibili-plus 介绍 下面是第四讲和第五讲…

STM32F103RCT6开发板M3单片机教程07-TIMER1CH1输出 PWM做LED呼吸灯

概述 本教程使用是(光明谷SUN_STM32mini开发板) 免费开发板 在谷动谷力社区注册用户,打卡,发帖求助都可以获取积分,当然最主要是发原创应用文档奖励更多积分. (可用积分换取,真的不用钱&…

Mysql InnoDB行锁深入理解

Record Lock记录锁 Record Lock 称为记录锁,锁住的是一条记录。而且记录锁是有 S 锁和 X 锁之分的: 当一个事务对一条记录加了 S 型记录锁后,其他事务也可以继续对该记录加 S 型记录锁(S 型与 S 锁兼容),…

NAND SCA接口对性能影响有多大?

在多LUN场景下,SCA接口尤其有助于提高随机读取性能。通过合理安排读取命令和等待时间(如tR),SCA接口可以在一个LUN完成读取后立即开始另一个LUN的读取操作,而无需等待整个DQ总线空闲,从而减少了延迟和提高了…

设计一个简易版的数据库路由

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring原理、JUC原理、Kafka原理、分布式技术原理、数据库技术🔥如果感觉博主的文章还不错的…

双指针问题——求只包含两个元素的最长连续子序列(子数组)

一,题目描述 你正在探访一家农场,农场从左到右种植了一排果树。这些树用一个整数数组 fruits 表示,其中 fruits[i] 是第 i 棵树上的水果 种类 。 你想要尽可能多地收集水果。然而,农场的主人设定了一些严格的规矩,你必…

vue前端开发自学,组件的生命周期函数介绍001

vue前端开发自学,组件的生命周期函数介绍001!今天介绍一下,组件自身的生命周期函数。又叫做,钩子函数。可以借助于这些钩子函数,实现很多我们预想的效果。比如,在组件渲染 之前,就做一些特殊的操作等等。 …

什么是 CAS

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》&…

Javaweb之SpringBootWeb案例查询部门以及前后端联调的详细解析

2.1 查询部门 2.1.1 原型和需求 查询的部门的信息:部门ID、部门名称、修改时间 通过页面原型以及需求描述,我们可以看到,部门查询,是不需要考虑分页操作的。 2.1.2 接口文档 部门列表查询 基本信息 请求路径:/depts …

内存卡为什么会提示格式化,内存卡提示格式化还能恢复吗

对于许多电脑用户来说,执行内存卡格式化操作导致数据丢失是一个常见的问题。在日常生活中,数据丢失的情况并不少见,但内存卡格式化后的数据恢复相对较难。目前,能够使用的方法较少,且成功率较低,但并不是没…