「这是我参与2022首次更文挑战的第13天,活动详情查看:2022首次更文挑战」
简介
postman是我们开发必不可少的一个接口测试工具,关于postman的界面介绍和基本使用笔者就不再赘述了,今天主要是介绍几个关于postman的骚操作。让你的效率大大提高,也让你的同事刮目相看。
全局变量
调试接口必不可少的就是token,我们每次请求的时候都需要在请求头里面加上token,但是token又是有时间限制的,一段时间没使用就会失效。我们常常碰到的情况是前一天好不容易把所有接口都保存起来,能正常使用,但是第二天去使用的时候所有的token都失效啦,又得把所有接口的请求头改一遍,换成新的token。碰到这种情况小伙伴们是不是很苦恼呢。别急,笔者今天介绍一个功能让你再也不用为token烦恼。
我们可以设置全局变量来解决这个问题,我们只需要把token设置成一个全局变量,然后在我们所有的接口里面不再把token写死,而是使用这个全局变量,这样就算隔天token失效了,我们也只需要修改这一个变量就可以啦,而不需要一个一个接口去修改。看到这小伙伴们是不是很开心呢。
拿笔者这个简单的获取用户信息接口举例,我们请求的时候需要把token值设置请求头Authorization上,如果后面token失效了,我们就得在这里修改token值,一个接口还好,如果接口多了,一个一个修改是不是心态要崩了。
好了,下面我们就用全局变量来解决这个问题。
我们首先点击右上角的设置按钮,我们来添加一个Global变量,笔者这里设置的token。
全局变量设置好了,怎么使用呢?我们只需要在需要使用的地方使用{{}}包裹起来即可。比如笔者这里的token只需要使用{{token}}就可以啦。
测试下,发送请求,哇成功啦,是不是有点小激动呢?我们以后测试接口就可以使用全局变量来设置token啦。后续如果token失效了,我们也只需要在Global里面把token值更新下就可以啦。
使用全局变量的场景还有很多,这里笔者只以token场景为例,有其他合适场景小伙伴们也可以使用。
环境变量
说到这,小伙伴们是不是经常碰到本地环境、测试环境、生产环境请求路径不一致的问题呢?接口是同一个接口但是域名不一样,所以每次测试的时候一个请求往往要创建三个请求进行测试。
下面我们就用环境变量来解决这个问题。让你们只需要创建一个请求就能同时满足本地环境,测试环境和生产环境。
跟设置全局变量一样我们点击右上角的设置按钮,然后点击Add来设置环境,这里笔者创建本地和测试两个环境,然后我们点击相应的环境进入添加需要的变量就可以啦,这里笔者设置的域名host变量。
跟全局变量类似,我们只需要在需要使用的地方使用{{}}包裹起来即可。比如笔者这里的host只需要使用{{host}}就可以啦。
跟全局变量不同,环境变量我们需要在右上角选择环境,这样就会应用到相应环境的变量,好了测试下吧,请求成功。
代理
我们知道,抓取手机端包的工具有很多,比如window常用的Fiddler,mac常用的charles。关于Fiddler抓包笔者前面介绍过,感兴趣的小伙伴可以查看。
有时候我们只需要简单抓取下请求,就没必要再打开相应的抓包工具了,我们就可以直接使用postman的代理功能。一样可以帮助我们抓取手机端的包。
我们首先点击右上角的小雷达图标,开启postman的代理并设置好端口,笔者这里设置的是5555端口。
然后查看我们本地ip,windows使用ipconfig命令,mac使用ifconfig命令。笔者这里是192.168.1.5。
然后我们只需要在手机端配置ip和端口保存就可以啦,后续手机端的请求我们都能在postman的history里面看到。
如果需要查看某个请求返回了什么结果,我们只需要选择该请求点击send就可以模拟手机端发送请求,就能看到请求接过来。
比如笔者这里点击了微信,这个请求是获取一个小图标。
如果我们需要手机端调试我们本地的服务,我们手机请求我们本地服务的接口就可以啦,笔者这里在手机端请求的路径是http://192.168.1.5:5000/web/about,然后就被postman补获啦。
代理这里有个注意点,就是手机和电脑必须在同一个网段,也就是连接在同一个wifi上,不然代理会不成功。
生成请求代码
这个场景用的比较少,但是笔者还是介绍下。有时候我们把请求录入到postman后但是需要语言级别的请求代码该怎么办呢?
这里就需要用到postman的code功能了。我们只需要点击code,然后选择需要哪种语言的请求代码postman就可以自动给你生成好,是不是很方便呢。
笔者这里还是拿获取用户信息接口为例,点击code,选择javascript的jquery代码,就生成了如下请求代码,我们只需要复制过来就可以直接使用了。
当然如果你有其它语言的需求比如java,php等都是可以的,选择即可。
前置脚本
前置脚本是什么呢?就是我们发送请求前运行的js代码。我们可以在Pre-Request Script里面进行设置。
常见的脚本如下,更多可以查看文档进行学习。
# 获取一个全局变量
pm.globals.get("variable_key")
# 设置一个全局变量
pm.globals.set("variable_key", "variable_value");
# 删除一个全局变量
pm.globals.unset("variable_key");
# 获取一个环境变量
pm.environment.get("variable_key");
# 设置一个环境变量
pm.environment.set("variable_key", "variable_value");
# 删除一个环境变量
pm.environment.unset("variable_key");
比如笔者在这里打印了全局变量token,我们在控制台就能看到啦。(控制台在左下角)。
后置脚本
后置脚本是什么呢?就是我们发送请求后运行的js代码。我们可以在Tests里面进行设置。
除了拥有前面介绍的前置脚本的功能外,还有其它更多的功能。下面笔者简单介绍几个,更多脚本可以自行查看文档进行学习。
# response 状态码是否是200
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
# 响应体是否包含某个string
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
# 响应体json对象某属性是否等于某个值
pm.test("Your test name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
# 响应体是否等于某字符串
pm.test("Body is correct", function () {
pm.response.to.have.body("response_body_string");
});
笔者这里除了第一个成功后面的都失败了。
后置脚本应用实例
比如我们可以在登录接口里面写一个后置脚本,设置全局变量token,这样我们就不需要手动去设置全局变量啦,是不是更方便了呢。
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
var jsonData = pm.response.json();
pm.globals.set("token", jsonData.token);
});
后记
感谢小伙伴们的耐心观看,本文为笔者个人学习笔记,如有谬误,还请告知,万分感谢!
关于postman的骚操作笔者将持续更新,如果本文对你有所帮助,还请点个关注点个赞~,您的支持是笔者不断更新的动力!