postman的变量使用

通过此前的阅读,我们对 Postman 的 import 功能已有所知晓,但是只有import,远远不能满足我们日常接口测试的需求。在接口测试过程中,有一种极为常见的场景:接口的入参需借助调用其他接口来获取。例如很多业务都需要用户登录之后才能操作。这种业务场景在接口层面的实现,是通过校验接口传入的token或者session来核实用户的身份。只有身份验证通过之后才会进入后续的业务处理逻辑。
那我们怎么使用postman来测试这种需要token或者session的接口呢?最简单的方式无疑是:先手工获取token或者session,然后再将其填入需要测试请求里。这种方式虽然简单但是却很繁琐。众所周知token和session 都是有一定的实效的,一旦过期就无法使用了,需要再次请求登录接口来获取新的token或者session。
那有没有什么一劳永逸的方法呢?说到这里写过代码的同学肯定都会想到一种方法,那就是将登录接口返回的token赋值给一个变量,然后在需要使用token的接口里引用这个变量。是的在postman中解决这类问题用的也是这种方法。
在讲postman 变量的使用之前,我们先来了解下 Postman 中变量的作用域。Postman 提供了五种不同作用域的变量,它们分别是:Global variables(全局变量)、Environment variables(环境变量)、Collection variables(集合变量)、Data variables(数据变量)以及 Local variables(局部变量)。在实际使用过程中,我们可以依据具体需要选用相应的变量。
引言:

一、添加变量
接下来我们开始详细介绍postman中变量的使用方法:
第一步 添加变量
postman提供了2种添加变量方式:手动添加和在 test script 中添加
1.手动添加
Global variables (全局变量):Postman中作用域最广的变量,可以在不同的 environments,collections,requests及 test scripts中使用。

collections variables(集合变量):作用域小于Global variables ,可以在不同的environments,requests和test scripts中使用。

Environment variables(环境变量):作用域小于Global variables ,可以在不同的collections, requests和test scripts中使用。

2.在test scripts 通过代码添加不同作用域的变量
// 添加Global variables
pm.globals.set("global_variable_key", "variable_value");
// 添加collections variables
pm.collectionVariables.set("collectionVariablevariable_key","variable_value");
// 添加Environment variables
pm.environment.set("environment_variable_key", "variable_value");


二、引用变量
1) 在requests,url,headers或body 中引用变量的方式为:{{变量名}}
变量的引用 1
2)在test或pre-request中引用变量的方式
// 引用global变量
pm.globals.get('global_key_name');
// 引用environment 变量
pm.environment.get('environment_key_name');
// 引用 collectionVariable 变量
pm.collectionVariables.get('collectionVariable_key_name');
// 获取任意作用域的变量
pm.variables.get('key_name');

**三、具体运用
通过上面的内容我们已经知道了如何在postman中定义和使用变量,接下来我们通过一个具体的示例来看下在实际的场景中变量的使用。
调用login接口获取token,并将token传递给下一个接口。具体步骤:
1)在login请求的Test 模块编中添加如下代码,将登录接口返回的access_token保存到名为token的 collections variables 中:

2.调用login请求后,collections variables中会新增一个名为token的变量,其值为login接口返回JSON中access_token对应的值

3.在需要token的请求中引用token变量

在test scripts 中引用该变量,可以使用如下语句:

在实际的测试过程中,除了token外,还有大量可以使用变量的场景如:商品ID,订单ID,用户名等等都可以使用上面的方式:在第一个接口的test模块,通过pm.collectionVariables.set('variable_key_name','variables')语句将接口返回的结果保存到collectionVariables中,在需要使用的地方通过{{variable_key_name}} 或者 pm.collectionVariables.get('variable_key_name','variable_value') 的方式来引用该变量。