用postman做接口测试

postman工具安装

官网下载 直接下一步安装就行(傻瓜式操作)

postman基本使用

以我目前下载的最新版8.6.1版本为例

进入首页
在这里插入图片描述
创建一个新的请求
在这里插入图片描述
create new 之后的页面是下图,目前还是以新建请求为主
在这里插入图片描述
这是新建的请求,默认的请求方法是get,可以换成其他的
在这里插入图片描述
collections和history用的最多
collections是集合,方便管理接口,可以给接口进行分类管理
history是历史,可以方便的查询到之前测过的接口
在这里插入图片描述
加号是新建集合。
一个项目分为好几个模块,比如首页、分类、个人信息等,可以一个模块中的接口放到一个集合里边,或者按其他的分类方式都可以
在这里插入图片描述

postman使用方法

只有接口没有参数时,key和value都不填。key是参数名,value是参数值
在这里插入图片描述
在响应体中快速查找你想找的内容
在这里插入图片描述
需要填参数时,和上面没有填参数的大概一样,只是在key和value的位置填了参数名和参数值
如下图 共有两个参数分别是用户名和密码
用户名username = 王昭君,密码pwd = 1
传入不同的参数响应体对应的结果也不相同
如果查询成功在响应体的位置会有成功的提示,查询失败也有失败的提示
在这里插入图片描述
拿到接口文档后怎么用postman进行测试?
1.根据接口文档进行对比,接口文档上的响应体和我查到的响应体是否一致
2.显示的内容是否和数据库中查到的内容是一致的

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

postman之断言

为什么要做断言?
为了看我们的响应是否正确,预期结果和实际结果是否一致,断言里写的是预期结果,Test Results是实际结果

断言一般是接口还没有通的时候把预期结果写上,一般在括号内写预期结果,接口通了直接发送就行

断言参数,在Pre-request中进行操作
断言响应,在Tests中进行操作

下图:断言响应
pm:代表对象,可以理解为postman
pm.test :先做一个测试
‘状态码显示200’:这个测试的名字(可以自己随便起,这句代码实际意思是响应时间是200ms以内)
所有标点符号都要用英文标点
function是一个函数(要创建一个函数)
{}内的是创建的具体内容
expect是一个方法,这个方法是去看我现在的响应返回的状态码是否是我想要的
因为我们是想要响应的状态,所以是pm.response
responseTime是响应时间
to.be.below()是要和哪个内容做对比
因为我们想要的是200ms以内,所以()内就是200
每句代码结束后要加分号
断言的就是状态是成功还是失败
Test Results是代表断言结果,一共有一条结果,一条成功
在这里插入图片描述
如果不知道函数里边代码怎么写也没关系,一般常用的代码postman里都会有,找到自己想要操作的内容,直接点击使用就行
在这里插入图片描述
Response body:Contains string
看响应体里是否包含你想要找的内容,是否匹配此字符串

pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include("这里写你想要对比的内容");
});

Status code:Code is 200
看状态码是不是200

pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);这里的200可以改成其他的状态码
});

Response body:JSON value check
检查json格式的内容是否正确

pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.value).to.eql(100);
    //value是实际接口中的key,100是实际接口中的value,必须一致,一点也不能缺
});

postman之参数化

有两种方式
一种是文档参数化,另一种是变量参数化

变量参数化
指很多接口使用同样的一个内容
在这里插入图片描述
变量有两种方式,一种是环境变量,另一种是全局变量
环境变量是我选这个环境变量就使用这个环境变量,只要接口使用的是我当前选的环境变量就使用这个环境变量。范围小,选了才能用不选不能用
全局变量是我只要写了这个变量,就按照这个变量进行展示。范围大,不管选没选,只要有这个变量名就用这个变量

在这里插入图片描述
变量可以随便命名,我设置name的值为王佳,给环境变量名为王佳练习变量参数化

在这里插入图片描述
之前这里都是No Environment,我现在选择环境变量为王佳练习变量参数化,然后value的位置写成变量【注:要用两个大括号把变量括起来{{变量}}】然后再发送,查询出的结果和直接在value处写的值的结果是一样的

在这里插入图片描述
我在全局变量的位置再增加两个变量,名字同样都是name,当我选择之前设置的环境变量时,会自动出现环境变量,局部变量是浅灰色中间有道杠,就是用不了,是因为局部变量优先级更高
在这里插入图片描述
而当我选择了No Environment时,全局变量就是可以用的
在这里插入图片描述
不选择环境变量时如果参数的位置有变量,那么默认是全局变量
在这里插入图片描述
下面打印出来的日志就是我刚才在全局变量设置的name百里守约

在这里插入图片描述
把name设置成王佳,把pwd设置成1111,重新发送
在这里插入图片描述
这时可以看到全局变量也随之改变
在这里插入图片描述

文档参数化

同样的一个参数,想放不同的内容,比如名字name这个参数,参数内容是张三 李四 王五 赵六 等等,这样用文档参数化

文档格式一般有三种,txt,csv,json

先在桌面建一个文档,我建的是txt的

正式内容的上面一定要写参数名,因为文档参数化是要循环的,如果上面不写参数名第一排的数据就会成为抬头。
在这里插入图片描述
在这里插入图片描述
点击Run之后会出现下面的页面
在这里插入图片描述
在这里插入图片描述

运行之后如果都正确会出现下面的页面
在这里插入图片描述

postman之关联

什么是关联?
关联一般是多个接口之间进行操作
如果是一个固定的接口,并且内容也是固定的,没有说上一个接口的内容给下一个接口去使用,这就不需要关联
只有上一个接口的内容拿出来放到下一个接口去使用时才需要关联,只有当多个接口之间会产生联系(数据是变化的)才使用关联

关联一共有三种方式
JSON提取器,正则提取器,cookie提取器

JSON提取器
先正常操作你需要数据的那个接口
比如我这个是要获取到token的值(一个随机数,每次登陆token的值都不一样),然后在下一个接口中传入token这个参数
在这里插入图片描述
因为我之前已经拿到了token的值,并且存到了全局变量,所以这里直接设置为变量就行
在这里插入图片描述
正则提取器
这里需要懂正则表达式
实在不懂也没关系,用工具
正则自动生成器
点击加号,新建项目
在这里插入图片描述

在这里插入图片描述
然后下面的content括号里边的就是我的正则表达式啦
在这里插入图片描述
cookie提取器
在这里插入图片描述
三种方式本质都是去拿其值给别的接口使用,关键字不同而已

JSON:json.parse(getResponseBody)
正则 :ResponseBody.match(new RegExp……)
cookie:postman.getResponseCookie(’ ')

总结

最重要的三部分
断言 :

参数化 :

  • 文档参数化:同样接口同样参数使用不同的数据
  • 变量参数化:环境,全局(如果同时都有,环境优先级高,更多是不同接口使用相同数据)

关联:

  • JSON
  • 正则
  • cookie
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值