Postman 提供了测试 API 的友好界面和功能,使用简单便捷,安全可靠。
目录
前言
一、Postman安装
二、Postman的基础功能
三、Postman的进阶功能
1、Postman安装
Postman在2018年之后不再支持浏览器版本,下载客户端,安装即可使用。
下载网址:Download Postman | Get Started for Free
2、界面导航常用功能说明:
1、发起一个接口请求
如果你是第一次使用Postman发送请求,下面这个例子可以作为一个最基本的入门,可以帮我们建立一个初始印象 。
a. 打开Postman,点击“➕”打开一个新的请求页。
b. 在请求的URL处输入请求地址:http(s)://域名/端口/地址。
c. 选择接口请求方式(常用的:get、post、put、delete、head这几种请求)
接口请求的类型:get、post、put、patch、delete、copy、head、options、link、unlink、purge、lock、unlock、propfind、view。
d. 点击Send按钮,成功完成一个接口请求流程。
e. 请求完成,Response窗口会返回响应信息,一般默认为json数据类型,可手动切换数据类型。
(示例:请求一个接口)
2、返回数据格式解析及返回值传递
{ "code": xxx, #响应状态码 1xx-信息提示 2xx-成功 3xx-重定向 4xx-客户端错误 5xx-服务器错误 "msg": "ok/这是一个接口返回信息", #返回的信息 "result": { "test": xxx, #数据 } }
状态码总结参考:响应状态码大全https://pulledup.blog.csdn.net/article/details/112306593?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-112306593-blog-105916282.235%5Ev27%5Epc_relevant_t0_download&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-112306593-blog-105916282.235%5Ev27%5Epc_relevant_t0_download&utm_relevant_index=2
//将数据解析成json格式 var data=JSON.parse(responseBody); //获取result中的"test"的值 var value =data.result.test; //设置A成全局变量 pm.globals.set("A", value); //或者使用这种方式 var jsondata = pm.response.json(); var value =jsondata.result.test; pm.globals.set("A", value); //使用时直接使用{{变量名}},即:{{A}}
#从json中提取 var jsonData =JSON.parse(responseBody); #从html的body中提取 var jsonObject = xml2Json(responseBody); #从html的Header中提取 var value = postman.getResponseHeader("KeyName"); pm.environment.set("A",value);
3、Postman中如何设置参数化
当某一接口需要验证大量的测试数据,使用参数化批量处理是比较高效、可塑性强的方式。Postman中参数化的形式主要有三种:
更多内置变量参考:Postman内置变量详解 内建变量一般放在request里。
示例:当需要验证多个用户给用户A发送批量消息后,用户A接收后查看消息内容或app性能是否有异常。
这个需求中,发送用户可以是随机的,且华语服测试服的uid区间刚好涵盖了内置函数$randomint (0-1000)的区间,即可以之间使用内置函数$randomint进行参数化。如果担心区间内存在uid不存在的情况,可以简单加个状态码断言打印下执行日志。
(ps:内置函数可能会随机取到相同值或者取到的值不符合预期,需要提前评估考虑下)
单接口执行顺序:Pre-request Script → request → response → Tests。
接口测试请求前,会先执行pre- request Script的代码,然后发送请求,再断言。pre- request Script的代码与接口不绑定,可以设置为全局变量给其他接口复用,提高了可塑性。
示例:Pre-request Script先定义手机账号并生成获取,把生成手机账号设置为全局变量后传入请求参数中,然后在Tests中进行断言。
(执行脚本,获取动态变量值)
postman支持从外部文件读取测试数据参数化,支持csv 、 json 格式。
示例:
curl --location 'https://{{域名}}/dolls_lottery/draw_lottery' \ --form 'uid="{{uid}}"' \ --form 'coin="{{coin}}"' \ --form 'num="{{num}}"' \ --form 'mode="{{mode}}"'
参数化数据:
//json格式 [ { "uid":"365", "coin":"2000", "num":"10", "mode":"1" }, {"uid":"3654","coin":"200","num":"1","mode":"1"} ] //CSV格式 uid,coin,num,mode 365,2000,10,1 3654,200,1,1
1、批量执行接口
Postman中接口的批量执行是以串行的方式执行,并不是并发执行。批量执行需要使用用例集(Collection)来管理和维护。
操作步骤:
操作命令:“newman run 用例集名称.json -d 数据文件名.csv/.json -r html --reporter-html-export 报告名称.html”
2、性能测试
Postman不是专业的性能测试工具,但可以简单的进行接口压力测试和API测试。
利用批量执行功能,我们可以修改Collection的执行参数:lterations、delay,并通过Tests断言判断接口性能指标:Response time、Response size。
//断言响应时间200ms
pm.test("Response time is less than 200ms", function () { pm.expect(pm.response.responseTime).to.be.below(200); });
//断言状态码 pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); //断言响应数据中:“xxx”是否为“指定内容” var jsonData = Json.parse(responseBody); tests["Checking xx parameter from Json data"] = jsonData.xxx === "指定内容"
3、接口自动化功能
接口数量越来越多,且接口之间互相依赖时,接口测试流程就会变得十分繁琐,且容易出错;我们可以使用postman进行接口自动化测试。
操作步骤:
测试脚本的执行顺序为:
需先安装 Node.js,查看命令:node -v
Newman安装命令:npm install -g newman