用 Postman 做接口自动化(十一)变量使用
前面讲了如何定义变量以及讲解了 Postman 中内置的随机变量。
那么如何使用这些变量呢?
首先变量要遵循我们前面提到的优先级:
局部变量
local
> data 文件中的变量data
> 环境变量environment
> Collection 中的变量collection
> 全局变量global
内置变量 dynamic
是全局变量,但是你只要不是非要把变量名设置成和内置变量一样,那么就不用关注它。
优先级是针对不同级别的变量中都设置了相同的变量名的情况,在使用时才会有优先级之分,如果每个环境的变量名不同,那么也不会互相影响。
只是说在遇到变量时,找变量的过程是从局部到全局的顺序,在某一级找到对应的变量名,就会使用哪一级的变量。
使用变量有两种方式,一种是在请求中使用,另一种是在代码(Pre-request Script 和 Tests)中使用。
在请求中使用
在请求中使用变量 variable,使用两对大括号标识{{变量名}}
。
比如有一个变量值为name=nemo
(参考各种变量的设置方法),在某请求的 url 中使用这个变量http://{{name}}
.test,那么当发送请求的时候,Postman 就会获取对应的变量值,替换该 url 为 http://nemo
.test。
变量可以在请求的任意位置使用,比如 url,params,headers,body,authorization 中使用,如下图中红框标注,使用方式均为{{变量名}}
的形式。
下面是一个实际使用的例子:
以下是变量设置、变量使用及实际运行时的变量取值的综合图:
图片说明:
- 上图中设置了一个名为 test 的环境,其中有三个变量,分别是
host
,path
,value
;- 新建了一个请求,名为
POST Form Data
的请求,其中 URL 使用了host
和path
两个变量,body 中使用了value
变量;- 最后运行请求后,三个变量都由环境中设置的值替换。
除了局部变量外,其他变量都可以通过这种方式使用。
在代码(Pre-request Script 和 Tests)中使用变量
在代码中调用变量,需要使用 Postman 预设的代码pm.environment.get("变量名")
,以上面的请求和变量为例:
var v = pm.environment.get("value"); // 获取环境变量 value 的值并存在局部变量 v 中
console.log('value变量的值为:', value) // 打印变量值
环境变量和全局变量必须使用预设的代码获取:
- 环境变量:
pm.environment.get("变量名")
- 全局变量:
pm.globals.get("变量名")
上述代码都可以从 Tests 右侧的预设代码中获取:
还有一种变量在 Tests 中使用也需要通过代码获取,那就是通过数据文件传递的 Data 变量
,其使用的预设代码为:
pm.iterationData.get("变量名")
内置变量使用
前面我们讲到 Postman 中有很多内置变量,用来生成随机数据。这些内置变量只能用于请求中的 URL / headers / body 中使用,不能在代码中使用。
在请求中使用: