测试工具之postman

382 阅读3分钟

postman--get请求

参数拼接在url后面

image.png

下面分别表示http响应状态码、请求耗时,响应大小,而上面的code=9630是程序内部定义的状态码

右上角code
image.png

Content-Type: multipart/from-data(postman自动带上请求头) 表单文件上传

Content-Type: x-www-form-urlencoded 表单提交

Content-Type:application/json 根据你选择的数据类型决定

Content-Type:binary 二进制文件

postman--post请求:form-data

image.png

cookies,response.set_cookie(username,token)
headers

image.png

右上角code,请求体里不同的input之间用一段叫boundary的字符串分割,每个input都有了自己一个小header,其后空行接着是数据

image.png

postman--post请求:x-www-form-urlencoded

image.png

自动添加上了请求头
image.png

headers  image.png 将input的name、value用‘=’连接,不同的input之间用‘&’连接 image.png

postman:上传文件

image.png

postman:json

image.png

自动加入了请求头信息

image.png

postman:cookie中传token

token是登录返回的,add_user3这个功能必须先要登录

特别说明:实际测试过程中,如果token失效时间很长,可以像下面获取到token后写死;但是,最好是通过关联,动态获取

postman动态获取参考

请求头信息
image.png

 请求

image.png

右上角code,可以看到,token在cookie中

image.png

postman:form-data,body中传token

20220903133338.png

请求内容

image.png

postman:json,body中传token

image.png

自动加上了请求头信息

image.png

image.png

postman:断言

image.png 注意:tests断言中不能使用{{}}取全局变量,只能通过pm.globals.get("times")或globals["times"]或globals.times来取

postman:接口关联

第一种方式 在获取token后,也就是tests里面写

//1.获取响应主体正文
var resbody = responseBody;
console.log(resbody);

//2.如果返回json字符串,可以转换成json对象后解析
var jsonobj = JSON.parse(reponseBody);
console.log(jsonobj.access_token);

应用到下面的接口
//把提取到的token放到全局变量中 pm.globals.set("access_token",jsonobj.access_token);

image.png

取值

image.png

第二种方式 使用正则表达式提取

var value = responseBody.match(new RegExp('"access_token":"(*+?)"')); console.log(value[1]);

点击右边设置全局变量

pm.globals.set("access_token",value[1]);

使用时填写{{csrf_token}}

清除cookie导致第二个接口返回失败:

因为有接口是一次性的,消除之后就没有了,可以先send之前的接口获取到cookie后第二个接口就正常

获取响应headers值

需要从响应头取值时应用

var type = postman.getResponseHeaders('Content-Type');

console.log(types);

获取相应的cookie信息

var csrf_token = postman.getResponseCookie('csrf_token'); console.log(csrf_token['value']);

postman:必须带请求头的接口

有的请求头是必须的

Host: www.baidu.com 请求的主机地址

Connection:keep-alive 连接方式:保持活跃

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.134 Safari/537.36
请求的客户端类型(模拟浏览器的请求)

X-Requested-With:XMLHttpRequest 异步请求(高铁,飞机相互不影响,网页局部刷新)

Referer : 来源

Accept-Encoding: 客户端接收的数据压缩方式

Accept-Language: 客户端接收的数据编码方式

Cookie: 请求的cookie信息

Content-Type: 请求的数据类型

Content-Type: multipart/from-data(postman自动带上请求头) 表单文件上传

Content-Type: x-www-form-urlencoded 表单提交

Content-Type:application/json 根据你选择的数据类型决定

Content-Type:binary 二进制文件

postman:接口mock

使用场景:前后端分离架构,后端接口数据没出来,前端需要调用接口实现业务,保证前端可以正常开发及测试,需要mock,模拟桩(模拟一个接口给前端使用)

Mock Servers - create Mocker Server 测试时选择mockserver(自己起的名字) image.png

postman:内置动态参数

{{$timestamp}} 生成当前时间的时间戳

{{$randomint}}生成0-1000的随机数

{{$guid}} 生成随机的guid字符串

postman:自定义动态函数

1.可以不用系统的时间戳,{{times}}

var times =Data.now();
pm.global.set("times",times);

2.等待3s

const sleep = (milliseconds)=>{
const start = Date.now()
while(Data.now()<=shart+milliseconds){}
};
sleep(3000);