全局变量 Global 是在整个 Workspace 中都能获取的变量。例如登录账号和密码。需要注意的是,全局变量可以被处于同一个 Workspace 中的任何人查看和编辑,因此对敏感涉密的信息要谨慎处理。点击右上角的小眼睛就能添加全局变量。
设置了三个全局变量,分别是登录系统的账号和密码,以及认证授权 token 。注意,username 账户和 password 密码这两个全局变量在【INITIAL VALUE】和【CURRENT VALUE】两个空中都必须填写,后面在【Pre-request Script】脚本中才能获取到这两个全局变量。
username
password
主要是设置测试环境的 IP 地址和端口。
这样设置后,以后只要切换到【Dev】开发环境,输入请求的 URL 时,就能用 {{host}} 来替换 localhost:9090 了。
{{host}}
localhost:9090
Pre-request Script 是 Javascript 脚本,在请求被发送前,会首先执行这个脚本。Pre-request Script 可以给单个请求设置,也可以给整个 Collection 设置。笔者这里选择了后者,点击 Collection 名称即可进入编辑 Pre-request Script 的页面。
因此,我们编写这样一个脚本:在每次发送一个请求前,先发送一个 POST 请求去获取最新的 token ,获取 token 时使用 Global 全局变量中的账户和密码来登录系统,然后把这个 token 更新到 Global 全局变量中的 token 。
const getToken = { url: "http://localhost:9090/api/auth/login", method: "POST", header: 'Content-Type:application/json', body: { mode: "raw", raw: JSON.stringify({ "username": pm.globals.get('username'), "password": pm.globals.get('password') }) }};pm.sendRequest(getToken, function(err, res) { pm.globals.set("token", "Bearer " + res.json().token);});
现在我来测试一个获取设备列表的 GET 请求 API 。
点击【Send】后,成功获取数据。
此时查看 Console 控制台发现确实发送了 2 个请求。
第一个请求就是 Pre-request Script 中使用脚本发送的请求,用于获取认证 token 并存储到 Globals 全局变量 token 中。可以看到所测试的 GET 请求成功把 X-Authorization 的 token 存在请求头中。
token