Postman 支持在两处地方写脚本,分别是“Pre-request Script”、“Tests”,前者的脚本在调用接口前执行,后者在调用接口获得响应后执行。
Postman 的脚本语言就是JS(JavaScript),除了支持 JS 的语法和常用方法以外(例如:JSON.stringify()、console.log()),它还提供了自己的方法。
下面举例用的 Postman 版本是 7.36.5。
设置变量
例如,需要将请求中某个参数值通过一个外部变量设置进去。
无论参数是在 URL 中,还是在 URL 中的?后面,还是 JSON 格式报文中,要将一个参数值通过变量传递,都是用双花括号来声明:
1  | {  | 
设置这个变量的值的方法,通过 Postman 提供的方法直接设置:
1  | pm.environment.set("paramB", 参数值) // 设置环境变量  | 
环境变量、全局变量的区别:
自动化测试,一般是将多个请求在一个 Collection 中排列好,按照顺序执行。在 Postman 中要执行这个 Collection 时,选中 Collection,点击“Run”按钮,会弹出一个“Collection Runner”框,里面允许你选择一个“Environment”,这个选择的“Environment”指的是本次测试中该 Collection 所有请求执行的环境,当然也可以不选,若有选择,那么可以使用已经在这个环境中定义的变量值。环境变量就是该变量值只会添加到这个所选的环境中,且该变量值只能从这个环境中取,不会从其他环境中取。
全局变量则是不区分环境,在所有环境下执行的 Collection 都可以使用全局变量,也可以添加全局变量。若环境变量中有与全局变量重名的变量,则以环境变量中的为准。
通过设置环境变量、全局变量,可以实现接口之间参数的传递,即上一个请求成功后取得的参数设置到变量中,下一个请求直接获取。
获取响应参数
1  | var resonseData = pm.resonse.json(); // 返回JS对象,后续就用处理JS对象的方法它即可  | 
设置下一步请求
若需要判断在某个条件下,直接执行某个调用请求,而不是继续按照 Collection 中排列好的顺序执行下一个请求,则用 Postman 提供的方法直接设置:
1  | poatman.setNextRequest(xxxx) // 括号里填写请求名字,支持中文,请求本身不允许重名  | 
若要设置直接结束,不再继续,则设置poatman.setNextRequest(null)即可。
断言测试
Postman 使用下面这种格式进行断言测试:
1  | pm.test("断言名", function () {  | 
判断条件有以下几种:
1  | pm.response.to.have.status(200); //判断响应状态码=200  | 
用不同请求参数循环调用接口
例如,需要用不同的 userId 调用这个 URL 查看每个 userId 的响应: http://localhost:8080/test?userId=
- 将这个接口单独添加到一个 Collection 中
 - 将用于入参的 userId 值保存为一个 csv 文件,文件内容为:
1
2
3userId
"123"
"456" - 选中 Collection,点击“Run”按钮,会弹出一个“Collection Runner”框,框中有一个“Select File”按钮,点击后选择这个csv文件,可以预览将要用于入参的所有 userId 值
 - 点击“Run”,Postman 就会用每个 userId 值调用 URL,可以在这个URL的“Tests”中写打印响应参数的脚本,查看不同入参下不同的响应参数