一、公共函数
postman中定义公共函数如下
1、每次断言的时候都需要重写或者复制之前的断言代码,可以通过如下方法定义断言的公共函数,以后每次断言的时候只需要调用公共函数即可进行断言
设置公共函数对断言代码进行二次封装,示例如下,注意:二次封装的代码设置成全局变量之前必须与下面断言的代码放在一处保存,否则会报错
走到这一步,对单个接口进行断言的二次封装已经结束,又因为Tests中二次封装的断言语法是每个接口中Tests所私有的,因此我们要把上面封装的两个断言方法设置成快捷键以便设置成全局变量,到达所有接口都能调用它的目的
把断言代码设置成公共函数要用到eval()函数,eval()函数具有将字符串转换成代码的功能
因此这里可以利用eval()函数的特性将二次封装断言的两句代码设置成全局变量(公共函数),并把common_function_equa、common_function_equa设置为全局变量
此时,已经将两个公共函数设置成了全局变量,取出全局变量中的值,只需要调用全局变量的代码就好啦
其实可以把所有的函数都做成一个公共函数,直接调用全局变的代码即可运用,所有函数写成一行再写入全局变量中Pre-request-Script中const转换成代码需要把const改成var,公共函数也可以放pre中,pre与tests中的脚本是相互独立的
代码如下:
//二次封装
var assertEqual=(name,actual,expected)=>{tests[`${name}: 实际结果为: ${actual}: 期望结果为: ${expected}`] = actual===expected};
var assertNotEqual=(name,actual,expected)=>{tests[`${name}: 实际结果为:${actual}:期望结果为: ${expected}`]=actual !==expected};
assertEqual('[验证获取token的有效时间为7200]',expires_in,7200);
assertNotEqual('[验证获取token的有效时间不为7300]',expires_in,7300);
var s='var a =10 ; var b =20';
eval(s);
tests[a+b] = true;
var commmon_function_equal = 'var assertEqual=(name,actual,expected)=>{tests[`${name}: 实际结果为: ${actual}: 期望结果为: ${expected}`] = actual===expected};';
var common_function_notequal = 'var assertNotEqual=(name,actual,expected)=>{tests[`${name}: 实际结果为:${actual}:期望结果为: ${expected}`]=actual !==expected};';
二、newman
mewman是为postman而生没专门用来运行postman编写好的脚本,是要newman,你可以很方便的用命名行来执行postman collections
1、newman的安装:
1、先下载Node.js,自行百度
2、安装成功后CMD输入node,如果没有报错二是显示版本号则说明安装成功
3、安装newman:CMD输入npm install -g newman,待命令行运行完毕后 newman -v检查是否已经安装成功,安装成功会显示版本号
2、newman的使用
1、桌面新建文件夹(规范化) env:存储环境变量配置 scripts:存储导出的postman脚本 testsdata:存储测试数据 reports:存储测试报告
2、新建新的收集器
3、导出收集器放入上面文件夹scripts目录下
4、通过命令行的方式运行这个脚本:需要进入这个文件夹中输入 newman run +脚本的全名,值得注意的是我们在导出脚本之前记得先保存再导出,我们也可以通过 newman run +脚本的分享链接运行脚本
对于指定的环境文件路径,编辑请求环境变量并设置环境编辑并下载环境变量的配置,需要保存至env文件中,再运行脚本
全局变量与环境变量设置一样,下载值env中,注意需要重新导出执行的脚本
迭代及运行指定的文件夹,百度参数化文件为例
生成测试报告、第一次生成测试报告会报错,再运行一次就好了