测试工具postman学习


接口测试

postman主要用于接口测试,接口测试是对开发的接口的输入输出进行测试,以及接口间的互相逻辑的测试
接口测试一般开发会提供接口文档,根据接口文档来测试实际情况是否符合接口文档
没有接口文档就需要自己去抓包接口然后进行测试
接口测试最主要的就是调用接口验证结果
接口的数据格式有jsp(http和dubbo协议),html(http),xml(webservice);json格式有键值对和数组两种形式

在这里插入图片描述

发送请求

发送get请求

点击collection,创建新的collection在新的collection下创建request
在request界面设定为get请求
输入get请求的URL和必填参数,填写的参数会自动拼接到URL中
send发送请求就可以看到响应结果
在天气api里面选一个

天气api接口网址https://www.tianqiapi.com/
在这里插入图片描述

请求的组件

在这里插入图片描述

响应的组件

在这里插入图片描述

主要关注的四大要素就是URL、方法、请求头和参数
post与get请求类似,就是请求方法选择为post

get请求实例

这里实战一个需要添加必要的请求头域的get请求的发送
直接F12去百度或者bilibili或者其他网站抓取一些请求(xhr格式的)来进行请求的发送,根据信息写入URL,参数,头域

在这里插入图片描述

根据参看的信息写入URL,复制URL地址进去后地址中带有的参数会自动生成数据,添加头域,有的请求不添加必要的头域可能会发送请求失败

在这里插入图片描述

post请求实例

这里的post实例是文件上传以及json数据格式的请求
采用获取QQ信息的接口https://api.muxiaoguo.cn/api/QqInfo/

json格式
在这里插入图片描述

断言和环境变量

变量

以前面的天气的接口为例,城市这个参数是可变的,我们可以设计一个变量来存放城市名称
变量调用格式{{变量名}}
添加环境变量,点击眼睛图标后在出来的界面点击Add

在这里插入图片描述

创建环境变量,环境变量是适用于当前请求的,如果创建了全局变量的话,该变量就是每个接口都可以使用。

在这里插入图片描述

创建完后将No environment改为刚刚创建的environment的名字就可以使用刚刚创建的变量了,如果是全局变量就不用设置

在这里插入图片描述

断言

断言包括请求前的脚本设置请求前置操作,以及请求后的对状态码,响应正文、响应头的断言,对应的功能就是pre-request Script 以及Test功能

在这里插入图片描述

在请求前获取环境变量,并且控制台输出一下

在这里插入图片描述

使用Test主要是为了自动对结果进行校验,查看是否符合预期结果

在这里插入图片描述
在这里插入图片描述

当数据结果数组格式时,第一组的数据里的city的值就是jsonData[0].city,前面定义变量不变

在这里插入图片描述

多接口测试

多接口测试就是把自己创建写入的请求保存在一个collection下,运行这个collection就行了(点击一下自己放请求的collection)
点击run之后可以在出来的界面选择需要进行一起测试的请求
有环境变量的要选择环境变量,环境变量只能选择一个,所以要把所有的环境变量写在一起

在这里插入图片描述
在这里插入图片描述

多组数据进行接口测试

创建Excel文件写入与自己设计的变量对应的值,另存为csv格式,修改断言,之后再run的界面select file 选择刚刚存为csv格式的文件
预览数据格式乱码的话可能是编码问题,利用txt打开文件或者其他软件打开文件修改csv文件的编码为utf-8

在这里插入图片描述

常见数据处理

cookie处理

有些请求在发送时需要携带cookie,可以在header中添加抓包到的信息里面显示的cookie值或者是接口文档里面的cookie值

在这里插入图片描述

也可以利用请求界面上的cookie来创建cookie写入cookie的值

在这里插入图片描述

上述发放是基于cookie值保存时间很久的情况,但是一般情况下cookie是不会保存很久的
我们需要先进行获取cookie对应的前一步操作之后再执行该请求,列如登入后的操作需要先执行登录操作

token处理

有些请求在进行一次请求后会有token返回值,其他请求要带上这个token值才能请求
可以把获取到的token存到环境变量当中去,其他请求直接调用环境变量里的值即可

在这里插入图片描述

先添加一个环境变量然后在头一个请求的Test中设置变量(请求后断言)

在这里插入图片描述

在下一个请求的header中添加token或者json格式中直接写入token后发送请求就可以发送成功

在这里插入图片描述

在测试时往往会有很多不同的测试数据,这就需要些csv文档来进行参数化的调用测试

时间戳处理

有时我们在请求接口时,需要带上当前时间戳这种动态参数,那么postman能不能自动的填充上呢。
可以直接在参数值写 {{$timestamp}}

在这里插入图片描述

我们也可以使用postman的pre-request script,结合全局变量来实现。
先在请求参数里使用这种方式填写value参数的值为{{var}}
然后在 pre-request script 添加js代码 pm.environment.set('var',Math.round(new Date()/1000)); 其中var为上一步定义的相同名字
 Math.round(new Date()/1000) 的作用是返回秒为单位的当前时间戳

在这里插入图片描述

Data 日期处理

在Pre-request Script写入如下函数
var moment = require('moment');
var data = moment().format(" YYYYMMDDHHmmss");
console.log(data);
pm.globals.set("time", data)

在这里插入图片描述

在body里面引用{{time}}即可

在这里插入图片描述

接口关联

第二个接口可能需要前一个接口发送请求后返回的消息中的数据,这时就需要进行接口关联
我们需要提取第一个请求返回的数据,可以在第一个请求的test里面进行提取(类似于前面的token处理)。

json提取器实现关联

在这里插入图片描述

//json提取器实现接口关联
console.log(responseBody)
//把返回的数据转换成json对象
var data=JSON.parse(responseBody)
console.log(data['cityid'])
//把获取到哦变量保存到全局变量
pm.globals.set("cityid",data['cityid']);
然后在下一个请求中使用该全局变量

在这里插入图片描述

正则表达式提取实现关联

在这里插入图片描述

//json提取器实现接口关联
//正则表达式提取实现关联
//match匹配
var data = responseBody.match(new RegExp('"cityid":(.+?),"'))
//把鉴权码保存到全局变量
console.log(data)
pm.globals.set("cityid2", data[1]);
console.log(data[1])
在下一个请求应用与json提取时一样

cookie关联

cookie是浏览器和服务器之间交互的一种数据,这种数据格式是键值对
原理是:当浏览器第一次去访问服务器的时候,那么服务器会生成cookie并且发送给浏览器,(响应头里面的Set-Cookie)
然后,浏览器在第2-N次向服务器发送请求的时候都会自动的带上cookie的信息。主要用于鉴权
有的请求的鉴权码会在上一个请求cookie里面,这个鉴权信息需要提取出来在下一个请求中使用

cookie信息如下

在这里插入图片描述

在test中写入cookie提取的代码,提取出来后在下一个需要的请求中使用

在这里插入图片描述

//cookie提取器
var data =postman.getResponseCookie("PHPSESSID")
//保存为全局变量
pm.globals.set("cookie", data.value);
console.log(data.value)

接口鉴权

cookie鉴权

cookie分为session级和持久化级
Session级∶保存在内存,当浏览器关闭时自动清除。持久化级∶保存在硬盘,只有当失效时间到了才会失效。
cookie鉴权就是验证cookie的工作原理

在这里插入图片描述

cookie鉴权可以和Session鉴权以及token鉴权同时使用,因为Session和token可以通过Cookie传输
在jmeter中的Cookie鉴权就是通过正则表达式把cookie值取出来,添加一个HTTP Cookie管理器
取出的数据是下一个请求需要使用的就在下一个请求中{}引用,如果就是需要在每个请求的请求头里面加上的Cookie信息,就在HTTP请求头管理器里面写入

在这里插入图片描述

session鉴权

用户第一次登录时服务器会产生一个sessionid存在内存里面,sessionid放在Cookie里面返回
下一次请求就发送Cookie+sessionid 就鉴权这个发送的sessionid与服务器内存里面保存的sessionid是否相同
sessionid的名字是自定义的,一般在接口自动化里面使用

在这里插入图片描述

token鉴权

返回的数据里面或者cookie信息里面提取到token值,再下一个需要token信息的请求中引用提取的值
token可以是第一次请求也可以是登录时产生的

cookie,session,token的相同点和不同点
相同点:都是用于鉴权并且都是服务器产生的。
不同点:cookie保存在客户端,sessioni保存在服务器端,sessiontcookie安全。
session是保存在服务器的内存,token存储在服务器的硬盘里面。
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值