文章目录
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中记录下请求