之前在工作中利用postman做了接口测试,发现这个东东其实还挺好用的,我个人喜欢总结于是乎有了下面的东西。方便以后查阅或修改。
1.首先postman的安装参及简单介绍考以下的链接:
http://www.cnblogs.com/mafly/p/postman.html
2.postman的基本使用:
http://blog.csdn.net/liuchunming033/article/details/51438022
http://blog.csdn.net/liuchunming033/article/details/51440223
。。。。。。。资料网上一大堆!!!!
3.上张大图先:
到此为止,我也算熟悉了postman是个什么鬼?怎么用了。。。。
4.接口测试项目总结
什么是环境变量?
这些变量都从当前选择的环境变量将提供给你。使用环境选择器选择一个环境:
你可以点击在“眼睛”那个图标(右边的环境选择器)来查看当前活动环境和全局变量的列表。
变量的作用:
环境也有助于你从收集像单独的敏感数据的钥匙和密码。作为一项最佳实践,应该保存所有敏感的值在一个环境和提供一个虚拟环境用户填写。如果你信任的用户,你可以给他你的环境。
变量可以用在以下地方:URL,URL参数,头(名称和值),格式,url-encoded-data,原始数据。
总是会警告——环境和全局变量存储为字符串。如果你对象/数组存储,确保JSON.stringify()他们在存储之前,和JSON.parse()时检索。
什么是全局变量?
全局变量是提供一组总在范围内的变量。你可以有多个环境,一次只能激活一个。但是你只有一个全局变量,他们永远是可用的。除此之外,你可以以同样的方式——使用它们 {{variableName}}.
环境变量和全局变量优先级
如果一个变量的当前活动环境与一个全局变量共享它的名字,环境变量将优先考虑。换句话说,全局变量由环境变量重载,重载的数据变量(只有中可用集合跑步).
动态变量
postman也有几个动态变量,您可以使用在你的请求。这主要是一个实验。更多的功能很快就会被添加。
注意,动态变量不能使用沙箱。你只能在使用它们 {{..}}格式在请求URL /头/身体。
{{$guid}}:添加一个guid v4风格
{{$timestamp}}:添加当前时间戳
{{$randomInt}}:添加一个随机整数0到1000之间
预设脚本作用是什么?(相当于前置条件吧)
在发起请求之前执行的脚本,例如request body里的那两个random变量,就是每次请求之前临时生成的。
Pre-request和Test用的语言都是JavaScript,Postman在一个沙盒里执行代码,提供给用户的库和函数可以在这里查看。而常用的功能都可以通过右边的Code Snippets实现,点击就可以插入到代码区域。
预设脚本常用功能
可以看到Pre-request里常用的功能就两种,设置环境变量和设置全局变量。
这条请求的pre-request就是在注册之前生成一个字符串作为随机用户名。
postman.setEnvironmentVariable("random_username", ("0000" + (Math.random()*Math.pow(36,4) << 0).toString(36)).slice(-4));
其他用法:
还包括在发起请求之前获取当前的时间戳放在参数里:
postman.setEnvironmentVariable("unixtime_now", Math.round(new Date().getTime()/1000));
当然也可以用来生成校验串。总之,在发请求之前需要手动修改的东西,都可以考虑用脚本自动实现。
设置环境变量、全局变量。
环境变量只对于一个接口,另一个接口要自己设置,一般用于获取当前时间戳、生成token值、登录用户。放在发送报文的头部。全局变量:又叫函数外变量,作用于整个脚本,也就是对于所有接口都有效 。
JSON.stringfy()函数
参考:JSON.parse()和JSON.stringfy()使用介绍
例子:JSON.stringfy() 简单来说就是把一个对象解析成一个字符串。
var a = {a:1,b:"adsfdsfdsfdsf",c:{ccc:34,d:['23232']}}; 定义一个复杂的变量对象
postman.setEnvironmentVariable("aaa", JSON.stringify(a)); 把这个对象定义成一个环境变量,
然后在环境变量设置内就有这个环境变量了。
在body的raw下直接使用这个变量就行:
"a":{{aaa}}
接口测试具体例子:
Pre-request Script脚本
var id = 2;//代理商账号id
var id_token = "3^O$$gVgGfIgA+iVJr)2SYJ@";
...................................
var cratives = [{
"id":2,
"name": "熹妃传IOS创意02", //创意名称及描述
"size":"848*480", //意尺寸(格式:宽x高 或 宽*高 或 宽X高),必须与创意的尺寸匹配,否则会影响投放!
"type":"mp4", //创意类型(目前支持以下类型:jpg、png、gif、swf、flv、mp4)
"path": "http://mp4.res.hunantv.com/pmp/39/1469087752216.mp4",
"code":"http://ad.haowanyou.com/rest/xfz/61/adin.do?ref={REFERRER}&imp={IMP_ID}&adu={adu}&did={DID}&chn={ADX_ID}&redirect=false",
"click":"https://itunes.apple.com/app/id966078986", //点击跳转地址,落地页地址
"copy_to_bdx":true,
"status":0
}];
postman.setEnvironmentVariable("uid", uid);
postman.setEnvironmentVariable("token", token);
postman.setEnvironmentVariable("ts", timeStamp);
postman.setEnvironmentVariable("a", JSON.stringify(cratives));
Body---raw 发送的参数:
{
"uid":{{uid}},
"token":"{{token}}",
"ts":{{ts}},
"creatives":{{a}}
}
Tests检查点:可以添加多个
tests["Status code is 200"] = responseCode.code === 200;
// 判断是否存在 'success' 值
tests["Body matches success"] = responseBody.has("true");
下面就可以看响应报文