江苏城乡建设厅网站,wordpress 询盘,做租房信息网站,常州溧阳网站建设Postman 提供了四种类型的变量 环境变量#xff08;Environment Variable#xff09; 不同的环境#xff0c;使用不同的环境变量#xff0c;例如#xff1a;测试过程中经常会用到 测试环境#xff0c;外网环境等 全局变量#xff08;Global Variable#xff09; 所有的…Postman 提供了四种类型的变量 环境变量Environment Variable 不同的环境使用不同的环境变量例如测试过程中经常会用到 测试环境外网环境等 全局变量Global Variable 所有的接口运环境中变量值都保持一致 本地变量Local Variable 针对接口的个性化设置如url,用户等作用域只限于当前接口范围内 文件变量Data Variable 通过在外部文件中批量设置参数例如 json,csv等文件
流程控制 流程控制简言之就是设置接口的执行顺序流程控制只有在collection runner或Newman里才生效
如果需要实现多个接口的一次循环只需在每个接口的Tests中编写脚本
postman.setNextRequest(下一个接口名); 操作如下图所示
使用if进行判断来结束执行
if(globals[我的地盘::创建新列表 - 禅道])postman.setNextRequest(null); tests[执行完毕] responseCode.code 200; 我的地盘::创建新列表 - 禅道为接口B中的返回值在接口B中将其定义成一个全局变量。接口A通过判断全局变量是否存在进而判断接口B是否执行。如全局变量存在将终止执行否则执行接口B。
postman.setNextRequest(null);是一个终止程序作用 【注意】
1.如果不设终止条件接口A执行完到接口B接口B执行完又指向接口A会构成死循环。该示例中if(globals[我的地盘::创建新列表 - 禅道])为终止条件。
2.执行前需将用来做判断的全局变量删除否则第一次执行完接口A后就将终止执行。
3.为了更清楚直观的查看运行结果最好在每一个接口的Tests中增加一个断言否则难以判断接口A执行的次数
调试 调试有三种方式
1.使用CtrlAltc 可以打开Postman的控制台可以查看请求和响应只适用于客户端不适用于Chrom 插件
2.用console.log()打印到控制台看
3.tests[这里拼出你想看的字符串] true在界面/报告看断言
使用Postman控制台查看如下图所示 使用console.log()打印输出内容操作如下图所示 使用tests[这里拼出你想看的字符串] truetests并不单单是指设置断言也可以是普通的输出某些信息如下图所示 公共函数 常用的公共函数分为六种分别是
1.判断是否超时assertNotTimeout
var hasResponsepostman.getResponseHeader(Content-Type)?true:false; if(!hasResponse) tests[服务端在超时前没返回任何数据请检查相关服务、网络或反向代理设置以下跳过其他断言]false;
2.未超时显示发出的请求参数logParams
if(hasResponse) tests[[INFO] 请求参数超时没返回时不解析${JSON.stringify(request.data)}]true;
3.未超时解析返回的JSON对象getResponseJson
try{if(hasResponse) var jsonJSON.parse(responseBody);}catch(err){ tests[服务端没返回合法的JSON格式请检查相关服务、网络或反向代理设置以下跳过其他断言]false; tests[[INFO] 返回${responseBody}]true; console.error(err);}
4.返回元素的类型assertType
var assertType(name,value,type){let isType(typearray)? Array.isArray(value):typeof valuetype; tests[${name}为${type}实际值${value}]isType;};
5.返回元素是否与预期值一致assertEqual
var assertEqual(name,actual,expected){tests[${name}等于${expected}实际值${actual}]actualexpected;};
6.返回元素是否与预期值不一致assertNotEqual
var assertNotEqual(name,actual,expected){tests[${name}不等于${expected}实际值${actual}]actual!expected;};
为了使用方便所以将以上函数设置为全局变量每行一对 key:value 的形式编辑设置成全局变量如下图所示 设置好之后来使用以上函数使用时的代码为
eval(globals.assertNotTimeout);//判断是否超时
eval(globals.logParams);//未超时显示发出的请求参数
eval(globals.getResponseJson);//未超时解析返回的JSON对象
eval(globals.assertType);//返回元素的类型
eval(globals.assertEqual);//返回元素是否与预期值一致
eval(globals.assertNotEqual);//返回元素是否与预期值不一致
各函数的具体用法如下详解
①第一个函数和第二个函数一起使用先判断是否超时若未超时便显示发出的请求参数操作如下图所示 tests中的代码为 eval(globals.assertNotTimeout); eval(globals.logParams);
②第一个函数和第三个函数一起使用先判断是否超时若未超时便解析返回的JSON对象操作如下图所示 tests中填入如下代码
eval(globals.assertNotTimeout);
eval(globals.getResponseJson);tests[json.expires_in] 7200;
注意由于getResponseJson是解析返回的JSON对象所以接口请求返回的定是JSON才能使用 ③返回元素的类型assertType操作如下图所示 tests中代码为
eval(globals.assertType);
//assertType(name,value,type);
//name为返回的元素keyvalue为该元素的值type为该元素的类型
assertType(姓名,boss,string);
assertType(昵称,,string);
assertType(数字,1,number);
注意此处需注意的是数字类型并不是常说的int型而是number填入int会一直报错
返回元素类型的值中代码var assertType(name,value,type){let isType(typearray)? Array.isArray(value):typeof valuetype; tests[${name}为${type}实际值${value}]isType;};
从返回元素类型的值中代码来看该代码是一个三目运算符重要点在于typeof中的value值比如输入该代码assertType(数字,1,number);value为1type为number便会执行通过pass若把type改为int执行结果只会显示fail
进行如下操作就能轻而易举明了如下所示
tests中的代码为
//解释typeof tests[typeof hello] true;//返回出来的是string值的类型 tests[typeof 1] true; //返回出来的是number ④返回元素是否与预期值一致assertEqual相等为truepass反之为falsefail操作如下图所示
tests中代码为
eval(globals.assertNotTimeout);
eval(globals.getResponseJson);
eval(globals.assertEqual);
//assertEqual(name,actual,expected);
//name为返回的元素keyactual为返回的实际值expected为预期值
assertEqual(expires_in,json.expires_in,7200);
assertEqual(expires_in,json.expires_in,7100);
eval(globals.assertEqual);
//assertEqual(name,actual,expected);
//name为返回的元素keyactual为返回的实际值expected为预期值
//号码相同pass不相同fail
assertEqual(电话号码,18867210313,18867210313);
assertEqual(电话号码,18867210310,18867210313);
⑤返回元素是否与预期值不一致assertNotEqual不相等为truepass反之为falsefail操作如下图所示 tests中代码如下
eval(globals.assertNotTimeout);
eval(globals.getResponseJson);
eval(globals.assertNotEqual);
//assertNotEqual(name,actual,expected);
//name为返回的元素keyactual为返回的实际值expected为预期值
//号码不相等pass相等fail
assertNotEqual(expires_in,json.expires_in,7100);
assertNotEqual(expires_in,json.expires_in,7200);
外部数据文件 外部数据文件是Collection Runner在HTTP requests 和script中可以导入CSV文件或是JSON文件从数据文件即CSV或JSON文件中使用values为了在Postman UI中去使用它们你需要遵循和environment or global variables一样的语法。
操作步骤
1.在你的Collection request中使用变量以下的所有变量将会被数据文件中的相应的值替换
2.准备你所需要运行的数据文件JSON/CSV
CSV文件要在Collection Runner中工作第一行必须是在request中要使用的变量名每一行是一条用例并表示一次迭代。
JSON文件你需要确保你的文件有键/值对数组。数组中的每个元素是键值对的对象代表了一次迭代。key是作为变量名values是代替request里的值。
3.打开Collection Runner窗口以及选择合适的Collection或文件夹
4.选择“Choose files”从文件选择区加载数据文件如果加载成功你可以预览Collection Runner中执行的数据量
5.设置迭代次数。每次迭代都将使用你的数据文件中的一行如果迭代次数超过数据文件中的行数将重复执行最后一行
6.运行Collection以及观察结果
注意当有多个key值中间用英文,隔开即可csv文件中第一行的参数名要与发送请求中设置的变量名要一致
举例为百度接口设置好参数如下图所示
在左侧面板中选中该接口并运行如下图所示
配置参数如下图所示 csv格式文件先制作好再在运行时添加进来预览效果如为 最终运行效果如下图所示 总结
感谢每一个认真阅读我文章的人
作为一位过来人也是希望大家少走一些弯路如果你不想再体验一次学习时找不到资料没人解答问题坚持几天便放弃的感受的话在这里我给大家分享一些自动化测试的学习资源希望能给你前进的路上带来帮助 软件测试面试文档
我们学习必然是为了找到高薪的工作下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料并且有字节大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。