Postman进阶篇

1 主界面介绍

在这里插入图片描述

主界面大致可分为左侧功能区和右侧请求区两大模块。在左侧可以进行创建和一些配置,在右侧可以发送请求。

1 创建请求、集合、环境、Mock服务器和监控器

2 导入集合、环境

3 批量执行Collections的请求

4 记录历史请求,方便查看

5 集合

6 request method

7 请求路径

8 发送请求

2 进阶功能

2.1变量配置

测试时环境大多分几套环境测试,接口路径、入参都相同,在不同环境测试时,只需要设置环境变量切换环境即可,十分方便。密码等敏感数据也可以通过环境变量的方式存储,引用时更安全。

2.1.1 环境变量

step1:新增环境–》在该环境中设置变量
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
step2:引用变量{{VARIABLE}},记得在右上角切换到对应的环境

在这里插入图片描述

2.1.2 集合变量

Edit Collection

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

2.1.3 全局变量

常见使用常见如下:

在这里插入图片描述
在这里插入图片描述
除了常用值的参数化场景,还可以用key-value的形式在Globals里设置公共函数,key类似于函数名,比如assertNotTimeOut,value则存放js脚本进行断言。然后可以在Tests里使用eval(globals.assertNotTimeOut)的方式引用。

!!!如果全局变量和环境变量冲突,全局变量会被环境变量覆盖!!!

2.1.4 内置变量

Postman 提供了非常多类型的随机生成的内容,可以在测试的时候省去很多构造数据的过程。由于这些变量如此众多,不用看完,需要的时候再来查阅即可。最重要的内容是随机生成唯一性的字符串变量。

https://www.jianshu.com/p/0843a606c857

例如{{KaTeX parse error: Expected 'EOF', got '}' at position 10: timestamp}̲}、{{guid}}、{{$randomInt}}

2.2 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("https://postman-echo.com/get", function (err, response) {
    console.log(response.json());
});  发送一个请求
pm.globals.set("variable_key", "variable_value");  设置环境变量

示例场景:某个接口是加密请求的,在发送请求前,需要先构造加密数据,再设置到环境变量里,然后在发送请求时引用即可。

var input = JSON.stringify(obj);    // JSON对象转JSON字符串
var url = "http://172.23.25.86:7777/Bussiness/Captain/Encrypt?input=" + input;

pm.sendRequest(url, function (err, response) {
    // console.log(response.json().output);
    pm.environment.set("encryptstring", response.json().output);
});

发送请求后,会先执行上述脚本,将加密接口返回的密文设置为mtpublic环境中的encryptstring变量值。
在这里插入图片描述
随后在请求的body中以引用变量的方式发出请求
在这里插入图片描述

2.3 Tests

1)设置断言,在请求返回后执行

tests["返回状态是否等于200"] = responseCode.code === 200;
tests["返回时间是否小于200毫秒"] = responseTime < 200;

var res = JSON.parse(responseBody);
tests["返回body里choice的值是否为s或ms"] = res.choice === "s" || res.choice === "ms";

tests["返回body里是否包含'code'字符串"] = responseBody.has("code")
tests["Content-Type是否包含在header里返回"] = postman.getResponseHeader("Content-Type");

发送请求,收到返回结果后。会执行上述脚本进行校验,在Test Result中能看到校验结果
在这里插入图片描述
批量执行Collections的时候,也可以在Runner窗口里查看校验结果
在这里插入图片描述
2)除了设置断言,也可以根据需要编写脚本处理response的数据,例如,解密、设置环境变量提供给下个接口调用
在这里插入图片描述
在这里插入图片描述

2.4 上传测试数据执行测试集

支持上传json或者csv格式的测试数据文件,下面以csv格式的文件为例,测试如下接口。接口所需要传的参数为{{type}}
在这里插入图片描述
step1:编辑csv文件内容如下,共4组测试数据,分别给变量传值“s”、“ms”、1、“qq”

type	
s
ms
1
qq

step2:run测试集,上传csv测试数据,Run。共执行4次,分别对应4组测试数据
在这里插入图片描述

2.5 流程控制

根据业务逻辑的需要自定义接口执行的顺序,可用于简单的主流程业务自动化测试。

case1:在接口A的Tsets中添加如下代码指定下个执行的接口B。然后Run Collection的时候可以看到调用A之后,调用了B

注意:

1、在测试集中A的位置必须在B前面,不然Run Collection的时候会无限循环。

2、如果接口B的Tests中未指定下个运行的接口,则执行完B之后结束运行,Collection中的其他接口不会再被调用。

postman.setNextRequest("requestName");

在这里插入图片描述
case2:根据接口A的返回结果指定下个执行的接口

if(res.choice == "m"){
    postman.setNextRequest("获取秒级时间戳");
}else if(res.choice == "ms"){
    postman.setNextRequest("获取毫秒级时间戳");
}

2.6 抓包录制接口

可省去手工录入接口的过程,抓到接口请求后按需编辑即可。

step1:打开postman的抓包开关,选中集合保存抓到的请求
在这里插入图片描述
step2:手机打开代理,连接方式同Charles

step3: 手机发送请求,postman中记录下请求
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/muskjp/article/details/108404992