痛点:一般我们对接口进行测试时需要有登录信息,每次都要去发送一下登录请求,然后将返回的token信息复制到待测接口的header中,比较麻烦
一、本次演示所用工具及版本

Postman v8.1.0
1.postman下载地址:https://www.postman.com/downloads/

2.安装postman和界面展示

3.设置全局变量
接口地址中常用的ip地址加端口号加路径,其中ip地址是固定的,每次都要写,可以使用全局变量只写一次
步骤一:点击postman右侧的小眼睛

步骤二:点击Edit将自己需要设置的内容填进去

如这里我设置接口中的ip地址和端口号的全局变量名称为baseUrl,值假设为127.0.0.1:8080
登录获得的token变量名为token,值是你点击登录接口后返回的对象信息中的token值
步骤三:运用变量
例如登录接口的原地址为127.0.0.1:8080/user/login
则你此处可以简写成{{baseUrl}}/user/login
记住:postman中引用自己设置的变量时都是双大括号中间是自己设置的变量名的形式

步骤四:token的使用
针对postman当前集合有效,一次设置,可以多次复制到新的集合中
①在自己创建的集合中点击右侧的三个点
②然后点击编辑

③找到request script这个tab

④编写JavaScript脚本
| 在里面填入以下内容 方法名变量名可以自己命名 function sendLoginRequest(){ //下面的参数和值是你登录接口中需要传的参数,假设是用户名密码和验证码 var data = { "password":"登录密码", "username": "登录用户名", "code":"验证码" }
//申明一个常量名称为loginRequest const loginRequest = { url:'http://登录接口的ip:端口号/接口路径', method:'POST', header:'Content-Type:application/json', body:{ mode:'raw',//raw可上传text、json、xml、html等各种文本类型 raw:JSON.stringify(data) //将body中的值转化为json字符串传给后端 } }
pm.sendRequest(loginRequest,function(err,reponse){ if(err){ console.log(err); }else{ //获取返回的信息 const jsonData = reponse.json(); //设置postman全局变量名称为token,值为 pm.globals.set("token",jsonData.result.token); /下面/这个是设置环境变量 //pm.environment.set('Authorization',jsonData.result.token) //打印日志用于查看有无报错 console.log(jsonData.result.token) } }) } // 申明一个常量名称为accessToken const accessToken = pm.globals.get('token'); //这里的作用是你在接口测试时,判断有无token,如果没有token就发送请求设置并获取token if(!accessToken){ sendLoginRequest(); }
|
⑤postman中脚本扩展
接口测试的结果校验


常用脚本整理如下:
1-响应状态码断言:验证响应结果的状态码是否为200
|
pm.test("Status code is 200",function(){ pm.reponse.to.have.status(200); }); |
2-验证响应正文中是否存在制定字符串
|
pm.test("Body matches string",function(){ pm.expect(pm.reponse.text()).to.include("字符串"); }); |
3-验证返回的json中指定字段是否和预期一样
|
pm.test("断言返回的name字段是否为abc",function(){ var jsonData = pm.reponse.json(); pm.expect(jsonData.name).to.eql("abc); }); |
4-验证响应头部信息中是否包含指定字段
|
pm.test("响应头中是否存在Content-Type字段",function(){ pm.reponse.to.have.header("Content-Type"); }); |
5-验证响应结果返回时间是否在指定范围内
|
pm.test("验证响应时间是否小于200ms",function(){ pm.expect(pm.reponse.reponseTime).to.be.below(200); }); |
6-pm.reponse
|
pm.reponse.code:Number类型 pm.reponse.status:String类型 pm.reponse.headers:HeaderList pm.reponse.reponseTime:Number类型 pm.reponse.reponseSize:Number类型 pm.reponse.text():Function>String类型 pm.reponse.json():Function>Object类型 |
7-pm.expect
|
pm.response.to.have.status(code:Number) pm.response.to.have.status(reason:String) pm.response.to.have.header(key:String) pm.response.to.have.header(key:String, optionalValue:String) pm.response.to.have.body() pm.response.to.have.body(optionalValue:String) pm.response.to.have.body(optionalValue:RegExp) pm.response.to.have.jsonBody() pm.response.to.have.jsonBody(optionalExpectEqual:Object) pm.response.to.have.jsonBody(optionalExpectPath:String) pm.response.to.have.jsonBody(optionalExpectPath:String, optionalValue:*) pm.response.to.have.jsonSchema(schema:Object) pm.response.to.have.jsonSchema(schema:Object, ajvOptions:Object)
|
8-Pre-request Script 中常用代码
|
pm.globals.unset("variable_key");//清除全局变量 pm.environment.unset("variable_key");//清除环境变量 pm.globals.get("variable_key");//获取全局变量 pm.variables.get("variable_key");//获取一个全局变量的值 pm.environment.get("variable_key");//获取一个环境变量的值 pm.sendRequest("url",function(err,reponse){ //发送一个请求 console.log(reponse.json()); }) pm.globals.set("variable_key","variable_value");//设置环境变量
|
整理不易,转载请标明链接
本文介绍如何使用Postman v8.1.0进行接口测试,包括设置全局变量简化接口地址,利用脚本自动处理登录获取的token,并提供一系列接口测试的断言脚本示例。

4792

被折叠的 条评论
为什么被折叠?



