作者:夕夕石(硕爷)
QQ:2470798103
一、全局变量、环境变量、集合变量的配置
Postman中有三种变量:全局变量(Globals)、环境变量(environment)、集合变量/项目变量)
(1)集合变量/Collection变量/项目变量(variables)
(对该集合及子文件夹下所有请求生效), 在新建/编辑 Collection -> Variables 中可以添加
image image(2)全局变量(Globals)
(对所有请求生效), 在 环境管理 -> Globals中添加
image image(3)环境变量(environment)
可以先看下面的:
image image- VARIAVLE:变量名
- INITIAL VALUE:共享初始值, 用于团队共享时供别人使用的默认值
- CURRENT VALUE:当前值, 自己当前使用的变量值(一般我们只用设置这个值即可)
- Perisit All:保持所有, 将所有的初始值替换为所有的CURRENT VALUE
- Reset All:重置所有, 将当前所有的CURRENT VALUE重置为与当前初始值一样
(4)环境
image二、全局变量、环境变量、集合变量的使用
(1)非脚本情况,使用变量
请求url,params 参数或 body表格或 JSON/XML 文本中通过 {{变量名}} 使用
image(2)脚本中使用环境变量
在 Pre-request Script 和 Tests中使用
- 设置
设置普通变量
pm.environment.set("variable_key", "variable_value");
设置嵌套对象类型的变量
var array = [1, 2, 3, 4];
pm.environment.set("array", JSON.stringify(array, null, 2));
var obj = { a: [1, 2, 3, 4], b: { c: 'val' } };
pm.environment.set("obj", JSON.stringify(obj));
- 获取
普通变量
pm.environment.get("variable_key");
字符串化对象的变量
// These statements should be wrapped in a try-catch block if the data is coming from an unknown source.
var array = JSON.parse(pm.environment.get("array"));
var obj = JSON.parse(pm.environment.get("obj"));
- 清除
pm.environment.unset("variable_key");
(3)脚本中使用全局变量
在 Pre-request Script 和 Tests中使用
- 设置
pm.globals.set("variable_key", "variable_value");
- 获取
pm.globals.get("variable_key");
- 清除
pm.globals.unset("variable_key");
(4)脚本中使用变量
在 Pre-request Script 和 Tests中使用
- 获取
此函数在环境环境、集合变量、全局变量中搜索变量。
pm.variables.get("variable_key");
三、全局变量、环境变量、集合变量的优先级
变量优先级
当变量重名时, 优先级为:
环境变量 > Collection变量 > 全局变量(Globals)
四、常用的全局变量
前提:将如下内容复制到一个json文件中,然后导入postman。
不想导入或者导入失败的话,也可以将下面文件中的key、value各自粘贴到你的全局变量里面
{
"id": "ed7f409a-c35b-441f-8414-fdc3124c36c5",
"values": [
{
"key": "assertNotTimeout",
"value": "var hasResponse=postman.getResponseHeader('Content-Type')?true:false; if(!hasResponse) tests['服务端在超时前没返回任何数据,请检查相关服务、网络或反向代理设置(以下跳过其他断言)']=false;",
"enabled": true
},
{
"key": "logParams",
"value": "if(hasResponse) tests[`[INFO] 请求参数(超时没返回时不解析):${JSON.stringify(request.data)}`]=true;",
"enabled": true
},
{
"key": "getResponseJson",
"value": "try{if(hasResponse) var json=JSON.parse(responseBody);}catch(err){ tests['服务端没返回合法的JSON格式,请检查相关服务、网络或反向代理设置(以下跳过其他断言)']=false; tests[`[INFO] 返回:${responseBody}`]=true; console.error(err);}",
"enabled": true
},
{
"key": "assertType",
"value": "var assertType=(name,value,type)=>{let isType=(type==='array')? Array.isArray(value):typeof value===type; tests[`${name} 为 ${type}类型(实际值:${value})`]=isType;};",
"enabled": true
},
{
"key": "assertEqual",
"value": "var assertEqual=(name,actual,expected)=>{tests[`${name} 等于 ${expected}(实际值:${actual})`]=actual===expected;};",
"enabled": true
},
{
"key": "assertNotEqual",
"value": "var assertNotEqual=(name,actual,expected)=>{tests[`${name} 不等于 ${expected}(实际值:${actual})`]=actual!==expected;};",
"enabled": true
}
],
"name": "My Workspace Globals",
"_postman_variable_scope": "globals",
"_postman_exported_at": "2019-06-17T11:28:20.839Z",
"_postman_exported_using": "Postman/7.2.0"
}
作用:在脚本中写入断言,运行单条用例或runner多条后,在pass、fail后显示详细信息,如下:
(1)显示post请求的请求参数,并生成一条断言
eval(globals.assertNotTimeout);
eval(globals.logParams);//如果上面没超时,返回post请求的请求参数
(2)显示响应的字段值,并生成一条断言
eval(globals.assertNotTimeout);
eval(globals.getResponseJson);
tests["success字段的值:" + json.success] = true;
tests["info字段的name字段的值:" + json.info.name] = true;
(3)assertType,判断类型,并生成一条断言
//判断类型:"string"、"number"
eval(globals.assertType);
assertType("username ",pm.response.json().username,"string");
assertType("username ",pm.response.json().code,"number");
(4)assertEqual,判断是否相等,并生成一条断言
eval(globals.assertEqual);
//assertEqual=(name,actual,expected);
//name为返回的元素key,actual为返回的实际值,expected为预期值
assertEqual('code ', pm.response.json().code, 2);
assertEqual('username ', pm.response.json().username, "ZhangYiMing");
(5)assertNotEqual,判断是否不等,并生成一条断言
eval(globals.assertNotEqual);
//assertNotEqual=(name,actual,expected);
//name为返回的元素key,actual为返回的实际值,expected为预期值
assertNotEqual('code ',pm.response.json().code, 23);
assertNotEqual('username ',pm.response.json().username , "期望值")
五、参数化
1、参数化概念
入参中,不写实际的值,而是写成 {{变量名}} 的形式,就是参数化。
image2、单接口运行
单接口运行时,这些变量都取自你的环境变量、集合变量、全局变量。
3、集合运行
选择你运行的集合名称、环境,直接 run 即可
image六、数据驱动
1、编辑数据驱动文件
-
(1)新建一个 txt 文件;
-
(2)第一行写参数化的变量名称,用英文逗号隔开;
-
(3)从第二行开始,每一行是一组数据;
2、run前的设置
选择集合名称、环境、数据驱动文件、文件类型、迭代次数。之后Run起来。
image3、预览数据驱动文件
在选定完数据驱动文件后,可以点击 Preview 预览文件内容
image
网友评论