一文带你全盘剖析postman东西的使用(基本篇)
postman是一款支持http协议的接口调试与测试东西,其主要特点就是功效强壮,使用简便且易用性好 。无论是开发职员举行接口调试,照旧测试职员做接口测试,postman都是我们的首选东西之一 。那么接下去就先容下postman毕竟有哪些功效,它们分散都无能些什么 。底下先经过一张图来直观地来看下postman中所包含的功效 。
固然,以上功效也只是展现了postman的一局部功效,为了能愈加全盘的体现这款东西的特点,我将从以下三个维度来加以分析。它们分散是:
- 基本功效
- 稀有典范的接口哀求
- 接口呼应数据的剖析
- 接口办理(Collection)
- 批量实行接口哀求
- 日志调试
- 断言
- 变量
- 哀求前置脚本
- 接口关联
- 稀有的前往值获取
- 便捷功效
- 快速填写查询参数
- 快速填写哀求头信息
- 快速完成添加一个哀求
- 怎样承继聚集认证
- 批量断言
- 快速查询和交换
- 高等功效
- 读取文件举行参数化
- 天生测试报告
- 代码中发送哀求
- 编写接口文档
- mock办事
- 监控
- 使用事情空间
- 代码同步与分支办理
- 毗连数据库
- apis
一.postman安装分析
postman在2018年之后就不再支持欣赏器版本,以是,想要使用它就必需先下载客户端再安装使用,底下就以Windows体系为例举行安装 。
1.下载与安装
postman安装步调:
- 拜候postman官方网站,下载最新版本,拜候地点:https://www.getpostman.com/
- 进入到下载页面,依据本人电脑下载对应的版本
- 双击下载的安装包,进入到安装界面,直到用户登录和注册界面。
- 若一局部使用,选择跳过即可,这时会进入到postman主界面,至此postman安装告捷(下图)。
- 若团队使用,可以举行注册,注册后使用账号可以到场团队事情区
2.界面导航分析
初次使用postman的伙伴约莫对界面上的一些元素不太熟习,底下就经过一张图来分析这些元素的涵义 。
3.发送第一个哀求
假如你是第一次使用postman发送哀求,底下这个例子可以作为一个最基本的入门,可以帮我们创建一个初始印象 。
- 掀开postman,点击+加号掀开一个新的哀求页。
- 在哀求的URL中输入哀求地点:http://www.weather.com.cn/data/sk/101010100.html
- 点击Send按钮,这时就可以本人部的窗格中看到来自办事器的json呼应数据。
二.postman基本功效
1.稀有典范的接口哀求
稀有的接口有如下四品种型,分散是含有查询参数的接口,表单典范的接口,json典范的接口以及含有上传文件的接口,以下就对这四品种型接口及如安在postman中哀求举行分析 。
1.1 .查询参数的接口哀求
什么是查询参数?
所谓的查询参数,但是就是URL地点中问号(?)后方的局部就叫查询参数,好比:http://cx.shouji.360.cn/phonearea.php?number=13012345678 。在这个接口中,查询参数就是:number=13012345678 。而这一局部是由有键值对构成,格式为:key1=value1&key2=value2, 假如有多组键值对,要用&离隔 。
postman怎样哀求
在postman中完成对这类接口哀求十分简便,寻常就必要明白俩个参数即可,一个是哀求办法,一个哀求地点。
针对外表的谁人接口,地点以前给出 ,而它的哀求办法是get 。那么在postman中只必要把这俩个参数填写上即可哀求 。
具体完成步调:
- 掀开postman,新建一个哀求。
- 在哀求办法中选择哀求办法:GET,由于在postman中默许的哀求办法就是GET,以是这一步可以忽略
- 接口URL中输入地点,点击Send按钮就可以发送哀求了 。
分析:查询参数的URL寻常直接拷贝到输入的URL地点栏中就可以了,固然也可以把查询参数在Params中输入,俩者的后果是一样的 。
1.2 表单典范的接口哀求
什么是表单 ?
我们都晓得,在发送HTTP哀求的时分,一个哀求中寻常包含三个局部,分散是哀求行,哀求头,哀求体 。
不同的接口,哀求体的数据典范是不一样的,比力稀有的一种就是表单典范,那么什么是表单典范呢 ? 简便了解就是在哀求头中查察Content-Type,它的值假如是:application/x-www-form-urlencoded .那么就分析客户端提交的数据是以表单情势提交的 。见下图
postman中怎样哀求?
假如在postman哀求上图的接口,我们只必要填写四个参数,分散是(可以参考上图):
- 哀求办法:POST
- 哀求URL:http://localhost/index.php?m=Home&c=User&a=do_login&t=0.21942974229794432
- 哀求头:Content-Type:application/x-www-form-urlencode
- 哀求体: username=13088888888&password=123456&verify_code=8888
完成步调:
- 掀开postman,新建一个哀求 。
- 在哀求中设置以上四个参数,点击Send按钮。在postman中设置哀求体典范为,必要选择body-> x-www-form-urlencoded
- 查察呼应数据。
1.3 上传文件的表单哀求
在做接口测试时,我们常常会碰到必要上传文件的接口,好比微信的更新头像。这就必要用到:multipart/form-data。它也属于一种表单,但它既支持表单哀求,也支持文件上传。 它的哀求报文中数据屡屡是底下如此的。
POST http://localhost/index.php/home/Uploadify/imageUp/savepath/head_pic/pictitle/banner/dir/images.html HTTP/1.1
Content-Type: multipart/form-data
file=a1.jpg
这品种型的接口,在postman中该怎样哀求呢 ? 我们先分析必要填写的参数 。
- 哀求办法:POST
- 哀求URL:http://localhost/index.php/home/Uploadify/imageUp/savepath/head_pic/pictitle/banner/dir/images.html
- 哀求典范:multipart/form-data
- 哀求体:file=a1.jpg
完成步调:
- 掀开postman,新建一个哀求 。
- 在哀求中设置以上四个参数,点击Send按钮。注意:在postman中设置哀求体典范,必要选择body-> form-data 。file中要选择File典范,然后上传当地的文件 。
- 查察呼应数据。
1.4 json典范的接口哀求
这应该是接口测试中最稀有的一种情况了 , 也就是哀求体典范为json,我们来看下这个哀求报文 。
POST http://xxx/api/sys/login HTTP/1.1
Content-Type: application/json;charset=UTF-8
{"account":"root","password":"123456"}
依据以上报文,我们可以分析出,我们在postman只必要填写四个参数即可,具体如下:
- 哀求办法:POST
- 哀求地点:http://xxx/api/sys/login
- 哀求体典范:json
- 哀求体数据:{“account”:”root”,”password”:”123456″}
完成步调:
- 掀开postman,新建一个哀求 。
- 在哀求中设置以上四个参数,点击Send按钮。注意:在postman中设置哀求体典范,必要选择body-> raw -JSON
- 查察呼应数据。
2.接口呼应数据剖析
呼应数据是发送哀求后颠末办事器处理后前往的后果,呼应由三局部构成,分散是形态行、呼应头、呼应体。我们来看下postman的呼应数据展现。
在postman中的呼应数据展现:
- 形态行:Status:200 OK
- 呼应头:Headers + Cookies,必要注意的是Cookies是包含在呼应头中的,但是为了分明,东西会分开体现
- 呼应体:Body
那么这些数据对我们做接口测试有什么作用呢 ?
- Body和Status是我们做接口测试的重点,寻常来说我们都市验证呼应体中的数据和呼应形态码
- Test Results 是我们编写断言后,可以查察断言的实行后果 ,以是这个对我们也很有效 。
- Time 和Size 是我们做功能测试时,可以依据这两个参数来对所测接口的功能做一个简便的推断。
接下去我们再来眷注下Body中的几个体现主题,分散是:Pretty,Raw,Preview .
Pretty:翻译成中文就是标致 , 也就是说前往的Body数据在这个标签中查察 ,都是颠末格式化的,格式化后的数据看起来愈加直观,以是postman默许展现的也是这个选项。好比前往html页面,它会颠末格式化成HTML格式后展现,好比前往json,那么也会格式化成json格式展现 。
Raw:翻译成中文未颠末加工的,也就是原始数据 ,原始数据寻常都是本文格式的,未颠末格式化处理的,寻常在抓包东西中都有这个选项 。
Preview:翻译成中文就是预览,这个选项寻常对前往HTML的页面后果特别分明,如哀求百度后前往后果,点击这个选项后就直接能查察到的页面 ,如下图 。同时这个选项和欣赏器抓包中的Preview也是一样的 。
3.接口办理(Collection)
当我们对一个或多个体系中的很多用例举行维护时,起首想到的就是对用例举行分类办理,同时还渴望对这批用例做回归测试 。在postman也提供了如此一个功效,就是Collection 。经过这个Collection就可以满意我们的外表说的需求。
先对Collection功效的使用场景做个简便总结 。
- 用例分类办理,便利终期维护
- 可以举行批量用例回归测试 。
那么Collection是怎样去办理用例的呢 ? 先想象我们要测试一个体系,体系下有多个模块,每个模块下有很多的被测接口用例 。那么基于这个场景,我们来经过Collection来举行完成:
- 点击Collection,点击+New Collection,在弹出的输入框中输入Collection称呼(这个就可以了解为所测试的体系)
- 选中新建的Collection右键,点击Add Folder ,在弹出对话框中输入文件夹称呼(这个就可以了解为体系中的模块)
- 选中新建的Folder,点击Add Request ,在弹出的对话框中输入哀求称呼,这个就是我们所测试的接口,也可以了解为测试用例 。
那么经过以上三个步调,到达的后果就是如图所示:
总结,经过外表的利用,我们完成了一个最简便的demo模子。但实践上,有了这个功效才是postman学习的开头,由于很多功效都是基本这个功效的基本上举行的,好比用例的批量实行,Mock ,接口文档等功效 。
4. 批量实行接口哀求
当我们在一个Collection中编写了很多的接口测试用例,想一同实行这批用例,在postman中是怎样利用呢 ?
完成步调:
- 选中一个Collection,点击右三角,在弹出的界面点击RUN
- 这是会弹出一个叫Collection Runner的界面,默许会把Collection中的一切用例选中 。
- 点击界面下方的RUN Collection,就会对Collection中选中的一切测试用例运转 。
对外表的几个红框内的功效举行简便分析:
- 断言统计:左上角的两个0是统计如今Collection中缀言告捷的实行数和失败的实行数,假如没有编写断言默许都为0 。
- Run Summary: 运转后果总览,点击它可以看到每个哀求中具体的测试断言具体信息 。Export Result:导出运转后果,默许导出的后果json文件 。
- Retry: 重新运转,点击它会把该Collection重新运转一遍
- New:前往到Runner,可以重新选择用例的组合 。
总体来说,这个功效主要是用于对一个Collection中的一切用例或局部用例举行批量运转,已达得手工回归测试的目标。
5.日志调试
在做接口测试时,常常会由于代码写的有成绩招致报错,这时经过查察日志就显得十分紧张了,postman也提供了如此的功效,它允许我们在脚本中编写打印语句,查察打印的后果 ; 同时也可以查察每个哀求的日志信息 。
在postman中编写日志打印语句使用的是JavaScript,编写的地点可以是Pre-request Script 或Tests标签中。编写打印语句如:console.log(“我是一条日志”)
那么打印的日怎样看呢 ? 在postman中有俩个入口,第一个入口就是:view-show postman console 。
第二个入口就是左下角第三个图标 。
掀开的日志界面
这内里有几个比力实用的功效:
- 搜刮日志:输入URL大概打印的日志就能直接搜刮出我们想要的哀求和日志,这对我们在浩繁日志中查找某一条日志好坏常便利的 。
- 按级别搜刮:可以查询log,info,warning,error级别的日志 ,有助于我们更快定位到错误 。
- 查察原始报文(Show raw log):假如习气看原始哀求报文的话,这个功效约莫更便利些 。
- 隐蔽哀求(Hide network):把哀求都隐蔽掉,只查察输入日志 。
总之,经过这个功效,我们在哀求接口报错时,经过打印呼应的日志,就能很轻松地找到成绩缘故了 。
6.断言
假如没有断言,我们只能做接口的功效测试,但有了断言后,就为我们做主动化提供了条件,并且在postman中的断言好坏常便利和强壮的 。
我们先来了解下postman断言的一些特点 ,具体如下
- 断言编写地点:Tests标签
- 断言所用言语:JavaScript
- 断言实行排序:在呼应体数据前往后实行 。
- 断言实行后果查察:Test Results
在外表我们先容到,编写的断言代码是JavaScript,那假如不会写怎样办 ? 不必担心,由于postman以前给我们内置了一些常用的断言 。用的时分,只需从右侧点击此中一个断言,就会在文本框中主动天生对应断言代码块 。
接下去就让我们了解一些常用断言,照旧按呼应的构成来区分,分散是形态行,呼应头,呼应体。
形态行中又包含形态码,形态消息 。在postman也可以对这两个举行断言
形态行中的断言:
- 断言形态码:Status code: code is 200
pm.test("Status code is 200", function () {
pm.response.to.have.status(200); //这里填写的200是预期后果,实践后果是哀求前往后果
});
- 断言形态消息:Status code:code name has string
pm.test("Status code name has string", function () {
pm.response.to.have.status("OK"); //断言呼应形态消息包含OK
});
呼应头中的断言
- 断言呼应头中包含:Response headers:Content-Type header check
pm.test("Content-Type is present", function () {
pm.response.to.have.header("Content-Type"); //断言呼应头存在"Content-Type"
});
断言呼应体(重点)
- 断言呼应体中包含XXX字符串:Response body:Contains string
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
//注解
pm.expect(pm.response.text()).to.include("string") 获取呼应文本中包含string
- 断言呼应体即是XXX字符串:Response body : is equal to a string
pm.test("Body is correct", function () {
pm.response.to.have.body("response_body_string");
});
//注解
pm.response.to.have.body("response_body_string"); 获取呼应体即是response_body_string
- 断言呼应体(json)中某个键名对应的值:Response body : JSON value check
pm.test("Your test name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
//注解
var jsonData = pm.response.json() 获取呼应体,以json体现,赋值给jsonData .注意:该呼应体必需返会是的json,不然会报错
pm.expect(jsonData.value).to.eql(100) 获取jsonData中键名为value的值,然后和100举行比力
呼应时间(寻常用于功能测试)
- 断言呼应时间:Response time is less than 200ms
pm.test("Response time is less than 200ms", function () {
pm.expect(pm.response.responseTime).to.be.below(200); //断言呼应时间<200ms
});
案例分析:
针对以下接口前往的数据举行断言:
{
"cityid": "101120101",
"city": "济南",
"update_time": "2020-04-17 10:50",
"wea": "晴",
"wea_img": "qing",
"tem": "16",
"tem_day": "20",
"tem_night": "9",
"win": "东北边风",
"win_speed": "3级",
"win_meter": "小于12km/h",
"air": "113"
}
- 断言呼应形态码为200
- 断言city即是济南
- 断言update_time包含2020-04-17
总结,全体来说,假如用postman做接口测试,这个断言功效必不成少,此中我们常断言的呼应体包含和JSON这俩个断言又是重重之重。
7. 变量(全局/聚集/情况)
变量可以使我们在哀求或脚本中存储和反复使用其值,经过将值保存在变量中,可以在聚集,情况或哀求中引用。
对我们做接口测试来说,又是一个十分紧张的功效 。
在postman常用的三种变量分散是全局变量,情况变量,聚集变量 。
- 全局变量:一旦声明白全局变量,全局好效,也就是说postman中的任何聚集,任何哀求中都可以使用这个变量。它的作用域是最大的 。
- 情况变量:要声明情况变量,起首的创建情况,然后在情况中才干创建变量 。假如要想使用情况变量,必需先选择(导入)这个情况,如此就可以使用这个情况下的变量了 。必要分析的是情况也可以创建多个 。每个情况下又可以有多个变量 。
- 聚集变量:聚集变量是针对聚集的,也就是说声明的变量必需基于某个聚集,它的使用范围也只是针对这个聚集好效 。
此中,他们的作用域范围依次从大到小:全局变量>聚集变量>情况变量 。 当在几个不同的范围内都声明白相反的变量时,则会优先使用范围最小的变量使。
想要使用变量中的值只需俩个步调,分散是界说变量和获取变量 。
- 界说变量(设置变量)
- 获取变量(拜候变量)
界说变量
界说全局变量和情况变量,点击右上角的小齿轮,弹出如下界面,就可以依据需求界说全局变量大概情况变量了。
以前界说的全局变量和情况变量,可以举行快速查察
界说聚集变量
选择一个聚集,掀开查察更多举措(…)菜单,然后点击编纂 。选择“变量”选项卡以编纂或添加到聚集变量。
界说变量除了以上办法,另有别的一种办法 。但是这种办法在不同的地点界说,编写不一样。
- 在URL,Params , Authorization , Headers , Body中界说:
- 手工办法创建一个空的变量名
- 在以上的地点把想要的值选中右击,选中Set:情况|全局 ,选中一个变量名,点击后就会保存到这个变量中
在Tests,Pre-requests Script:
- 界说全局变量:pm.collectionVariables.set(“变量名”,变量值)
- 界讨情况变量:pm.environment.set(“变量名”,变量值)
- 界说聚集变量:pm.variables.set(“变量名”,变量值)
获取变量
界说好变量,接下去就可以使用变量了 。必要注意的是,在不同的地点获取变量,编写的端正也是不一样的 。
假如在哀求参数中获取变量,无论是获取全局变量,照旧情况变量,照旧聚集变量,获取的办法都是一样的编写端正:{{变量名}} 。
- 哀求参数指的是:URL,Params , Authorization , Headers , Body
假如是在编写代码的地点(Tests,Pre-requests Script)获取变量,获取不同典范的变量,编写的代码都不相反,具体如下:
- 获取情况变量:pm.environment.get(‘变量名’)
- 获取全局变量:pm.globals.get(‘变量名’)
- 获取聚集变量:pm.pm.collectionVariables.get.get(‘变量名’)
变量的使用场景十分广泛,好比我们后方要提到的接口关联,哀求前置脚本都市使用到变量 。
8.哀求前置脚本
前置脚本但是就是在Pre-requests Script中编写的JavaScript脚本,想要了解这个功效,必要先了解它的实行排序。那么底下就来看下它的实行排序 。
可以看出,一个哀求在发送之前,会先去实行Pre Request Script(前置脚本)中的代码 。那么这个功效在实践事情中有什么作用呢 ?
主要场景:寻常情况下,在发送哀求前必要对接口的数据做进一步处理,就都可以使用这个功效,好比说,登录接口的暗码,在发送前必要做加密处理,那么就可以在前置脚本中做加密处理,再好比说,有的接口的输入参数有一些随机数,每哀求一次接口参数值都市发送厘革,就可以在前置脚本中编写天生随机数的代码 。总体来说,就是在哀求接口之前对我们的哀求数据举行进一步加工处理的都可以使用前置脚本这个功效。
接下去经过一个案例来看下该功效是怎样使用 ?
案例:
- 哀求的登录接口URL,参数t的值要求的端正是每次哀求都必需是一个随机数。
- 接口地点:http://localhost/index.php?m=Home&c=User&a=do_login&t=0.7102045930338428
完成步调:
- 在前置脚本中编写天生随机数
- 将这个值保存成情况变量
- 将参数t的值交换成情况变量的值 。
总之,这个前置脚本对我们做接口测试也十分有效,对一些繁复的场景,都可以使用前置脚本举行处理后再哀求接口 。
9. 接口关联
在我们测试的接口中,常常显现这种情况 。 上一个接口的前往数据是下一个接口的输入参数 ,那么这俩个接口就产生了关联。 这种关联在做接口测试时非经稀有,那么在postman中,怎样完成这种关联干系呢 ?
完成思绪:
- 提取上一个接口的前往数据值,
- 将这个数据值保存到情况变量或全局变量中
- 本人一个接口获取情况变量或全局变量
案例:
- 用户上传头像功效,必要用户先上传一张图片,然后会主动预览 。那么在这个历程中,会调用到俩个接口 ,第一个上传头像接口,第二个预览图像接口 。
- 此中调用上传头像接口告捷后会前往如下信息:
{
"url": "/public/upload/user//head_pic//ba51d1c2f7f7b98dfb5cad90846e2d79.jpg",
"title": "banner",
"original": "",
"state": "SUCCESS",
"path": "images"
}
而图像预览接口URL为:http://localhost/public/upload/user//head_pic//ba51d1c2f7f7b98dfb5cad90846e2d79.jpg 。可以看出这个接口的URL后半局部但是是上一个接口前往的url的值 。那么这俩个接口就产生了关联。那么在postman 可以经过以下三步完成这俩个接口的关联完成 。
完成步调:
- 获取上传头像接口前往url的值
- 将这个值保存周全局变量(情况变量也可以)
- 在图像预览中使用全局变量
可以看出,接口的关联的处理方案都是用的是变量中的知识,也就是说只需你明白了要提取的值,后方就是保存该值,然后在其他接口使用该值就可以了。
10.稀有前往值获取
在做接口测试时,哀求接口前往的数据都是很繁复的json数据,有着多层嵌套,如此的数据层级在postman怎样获取呢 ?
案例1:多层json嵌套, 获取user_id的值
{
"code": 0,
"message": "请哀告捷!",
"data": {
"user_id": "1252163151781167104"
}
}
//获取json体数据
var jsonData = pm.response.json()
// 获取user_id的值,经过.获取
var user_id = jsonData.data.user_id
案例2:json中存在列表,获取points中的第二个元素
{
"code": 0,
"message": "请哀告捷!",
"data": {
"roles": {
"api": [
"API-USER-DELETE"
],
"points": [
"point-user-delete",
"POINT-USER-UPDATE",
"POINT-USER-ADD"
]
},
"authCache": null
}
}
//获取json体数据
var jsonData = pm.response.json()
// 获取user_id的值,经过下标获取列表中某个元素
var user_id = jsonData.data.roles.points[1]
案例3:列表中取最初一个元素
{
"code": 0,
"message": "请哀告捷!",
"data": {
"total": 24,
"rows": [
{
"id": "1066370498633486336",
"mobile": "15812340003",
"username": "zbz"
},
{
"id": "1071632760222810112",
"mobile": "16612094236",
"username": "llx"
},
...
{
"id": "1075383133106425856",
"mobile": "13523679872",
"username": "test001",
},
//获取json体数据
var jsonData = pm.response.json()
// 获取id的值,经过slice(-1)获取列表中最初一个元素。
var id = jsonData.data.rows.slice(-1)[0]
分析:由于平台文章端正限定,在一文中无法包容过多的内容,故将第二局部和第三局部分红两个单独的篇幅加以公布,感兴致的伙伴可以查察后方的两篇postman文章 。






