[Postman]是一个强大的 API 开发工具,它使得开发者可以发送请求、测试和文档化 API。在实际使用中,我们经常需要在不同接口之间传递数据,比如前一个请求的响应数据需要作为后一个请求的输入参数、将获取到的 token 凭证作用于全局的其它接口等。Postman 提供了多种方式来实现数据的传递和共享,主要可以通过环境变量、全局变量、集合变量和局部变量来存储数据,并在接口之间传递数据,详情见下文。
初识 Postman 变量
Postman 中提供了多种类型的变量,以便于管理和使用数据:
- 环境变量:特定于环境的变量,适用于模拟不同的开发、测试和生产环境。
- 全局变量:在所有环境下都可以访问的变量。
- 集合变量:仅在特定 Postman 集合范围内有效的变量。
- 局部变量(临时变量) :仅在当前请求的预请求脚本或测试脚本中临时存在的变量。
使用环境变量传递数据
环境变量非常适合存储特定环境下需要的配置信息,比如 API 的域名、认证 token 等。通过环境变量传递数据的步骤如下:
1.创建和选择环境
Postman 的左侧边栏,点击"Environments"选项,然后点击"+"创建一个新环境,创建环境后,定义你需要的变量及其初始值。
2.在请求中使用变量
在构建请求 URL 或者请求体时,可以通过{{variableName}}
的形式使用环境变量。比如你在环境中定义了一个变量 host,host 里面的值就是 API 的域名,比如 localhost:8080
,你在接口中引用的时候,可以直接引用定义的变量,例如:
bash
{{host}}/api/v1
3.在脚本中动态设置环境变量
假设第一个请求返回了一个需要在后续请求中使用的资源 ID,你可以在第一个请求的 Tests 脚本中添加代码来更新环境变量,比如接口返回的响应数据结构如下所示:
css
{
"code": "0",
"data": {
"id": "5280"
},
"message": "success"
}
那么你的 Tests 脚本可以写成下面这样,其中NAME_ID
就是将返回的 id 获取到之后,存储到环境中的环境变量。
ini
var body = pm.response.json();
var NAME_ID = body.data.id;
console.log("NAME_ID:" + NAME_ID);
pm.environment.set("NAME_ID", NAME_ID);
发送请求后,Postman 会自动将其提取到环境变量中。
4.使用环境变量
只要在环境变量中有数据,那么就可以通过 {{}}
来引用这个环境变量,这样就能达到接口间传递数据的目的。例如上面的 id 获取到之后,就可以在接口的参数中使用,它可能是这样的:
bash
{{host}}/pet/{{NAME_ID}}
也可能是这样的:
bash
{{host}}/pet?id={{NAME_ID}}
如果将你一个 token 凭证存储在了环境变量中,比如下面这样:
token 凭证一般用来鉴权,我们希望这个 token 凭证在发送请求的时候能够自动携带在接口上,因为我们不可能一条接口一条接口的来引用这个 token,这样太麻烦了。要作用于全局接口,你可以在集合中设置,如下图所示,这样这个集合下的接口在发送请求时,就会携带这个 token 凭证。
有一点要注意,在集合中设置了鉴权的 token 后,在接口中需要选择"Inherit auth from parent",也就是继承父级(继承自集合中设置的 token),不然不会生效的。
利用全局变量进行数据共享
全局变量的使用方法类似于环境变量,不过它们在任何环境下都可用。适用于那些在多个环境之间共享的数据。设置全局变量的方法如下:
python
pm.globals.set("variableName", value);
集合变量的应用
集合变量适用于仅在特定 Postman 集合中共享数据的场景。在集合的"编辑"菜单中,你可以添加和管理这些变量。这些变量同样通过{{variableName}}
的形式在请求中使用,使用方法跟环境变量是一样的,就是作用的范围不一样。
局部变量的使用
局部变量或临时变量非常适合存储仅在当前请求或脚本执行期间需要的数据。它们不会被永久保存在 Postman 中,也不会对其他请求或环境产生影响。设置局部变量如下:
c
pm.variables.set("variableName", value);
总结
通过合理使用 [Postman]中的变量类型,可以实现数据在不同请求间的有效传递和共享。这不仅可以提高测试的灵活性和效率,也有助于模拟复杂的 API 交互场景。在实际开发和测试工作中,掌握这些技能将非常有用。