Appearance
Postman 变量
变量使我们能够在 Postman 中存储和重用值。通过将值存储为变量,我们可以在整个集合、环境、请求和测试脚本中引用它。变量可帮助我们高效工作、与队友协作并设置动态工作流程。
1. 变量范围
Postman 支持不同范围的变量,从大到小的顺序是:global
、collection
、environment
、data
和 local
。
- 全局变量
能够访问集合、请求、测试脚本和环境之间的数据。全局变量在整个工作区中都可用。由于全局变量在 Postman 中具有最广泛的可用范围,因此它们非常适合测试和原型设计,但在以后的开发阶段应使用更具体的范围。
- 集合变量
在集合中的整个请求中都可用,并且独立于环境。集合变量不会根据所选环境而改变。如果我们使用单一环境,例如用于身份验证或 URL 详细信息,则集合变量是合适的。
- 环境变量
能够将工作范围限定到不同的环境,例如本地开发与测试或生产。一次可以激活一个环境。如果你有一个单一的环境,使用集合变量会更有效,但是环境允许你指定基于角色的访问级别。
- 数据变量
来自外部 CSV 和 JSON 文件,用于定义在使用 Newman 或 Collection Runner 运行集合时可以使用的数据集。数据变量具有当前值,在请求或收集运行之后不会持续存在。
- 局部变量
是在请求脚本中访问的临时变量。局部变量值的范围仅限于单个请求或收集运行,并且在运行完成后不再可用。如果我们需要一个值来覆盖所有其他变量范围但不希望该值在执行结束后持续存在,则局部变量是合适的。
如果在两个不同的作用域中声明了同名变量,则将使用存储在具有最小作用域的变量中的值。例如:如果有一个全局变量 username 和 一个局部变量 username,则请求运行时将使用局部值。
Postman 将变量存储为字符串。如果我们需要存储对象或数组,那么可以使用 JSON.stringify()
将对象或数组转换为字符串,获取变量值后使用 JSON.parse()
将字符串转成对象或数组。
2. 变量类型
除了范围之外,全局变量和环境变量也可以按类型定义。可以为全局变量和环境变量配置的两种变量类型是:
默认类型(default) 自动分配给变量,此类型显示为纯文本,没有其他属性。
秘密类型(secret) 掩盖了所有工作区成员的初始值和当前值,可用于防止泄露敏感数据,包括 API 秘密、密码、令牌和密钥。
3. 定义变量
3.1 定义全局变量
点击 Postman 右上角的眼睛按钮,选择 Globals 中的 Edit 链接:
填写变量名称和默认值等信息:
3.2 定义环境变量
同定义全局变量,点击 Postman 右上角的眼睛按钮,选择 Environment 中的 Add 链接,在弹出的对话框中输入环境的名称,然后编辑变量信息:
3.3 定义集合变量
点击打开集合,在集合中的 Variables 页签中定义集合变量:
3.4 在脚本中定义变量
我们可以在请求脚本中以编程的方式设置变量。
方法 | 用例 | 举例 |
---|---|---|
pm.globals | 定义全局变量 | pm.globals.set("userName", "Tom"); |
pm.collectionVariables | 定义集合变量 | pm.collectionVariables.set("userName", "Tom"); |
pm.environment | 用于在当前选择的环境中定义环境变量 | pm.environment.set("userName", "Tom"); |
pm.variables | 定义局部变量 | pm.variables.set("userName", "Tom"); |
unset | 删除变量 | pm.environment.unset("userName"); |
4. 使用变量
可以使用双花括号来引用整个 Postman 中的变量。例如,要在请求授权设置中引用名为“username”的变量,我们可以使用以下语法,并在名称周围加上双花括号:
json
{{username}}
当我们在运行请求时,Postman 将解析变量并将其替换为当前值。
js
https://postman-echo.com/get?customer_id={{cust_id}}
Postman 将在请求运行时发送当前为变量存储的任何值,如果 cust_id
是 3,那么上面的请求 URL 地址将被替换为:
js
https://postman-echo.com/get?customer_id=3
如果需要在脚本中使用变量,则可以使用表示范围级别的对象和方法来检索脚本中变量的当前值 .get()
:
js
//access a variable at any scope including local
pm.variables.get("variable_key");
//access a global variable
pm.globals.get("variable_key");
//access a collection variable
pm.collectionVariables.get("variable_key");
//access an environment variable
pm.environment.get("variable_key");
5. 导入数据文件
我们可以使用数据文件传递 Postman 值集以在集合运行中使用。通过在 Collection Runner 中选择 JSON 或 CSV 数据文件,我们可以在一次运行中使用多个不同的值测试您的请求。
数据文件中的变量通过以下语法在脚本中使用:
js
//get the 'value' field from the data file for this request run
pm.iterationData.get("value");