简介
Postman是chrome的一个插件,是常用的接口测试工具,能够发送任何类型的http请求,支持GET/PUT/POST/DELETE等。Postman非常简单易用,通过填写URL,header,body等就可以发送一个请求,用来测试api接口非常方便。
安装
可以通过chrome插件或者Mac app进行安装。
发送请求
如图所示,解释如下:
-
指发送请求的方式,有很多种方式,最常用的是GET和POST。点击下拉列表可以看到共15种请求方式供选择。
-
请求的URL,即接口地址
-
点击可以以键值对的方式添加URL参数
-
从左到右依次是:身份验证,Header字段,Http Body,Pre-request脚本,Test脚本。
-
表示接口返回的数据,该数据有三种展现形式,pretty,raw,preview,这三种可以理解为高亮格式、普通文本格式、预览
-
send发送请求
集合
集合,即是postman中的Collections,类似文件夹,可以把同一个项目的请求放在一个集合里方便管理和分享。测试人员下次测试可以直接从集合中找到要执行的测试case。可以让单个的request分组到一起,对每个request都有很多个testcase,都分组收藏到集合里面,进行自动化测试和回归测试。 如果想将自己的集合分享给团队内其他人,可以点击Share按钮进行分享:Postman还支持一键运行整个集合内的测试,点击Start Test按钮,Postman将会开始运行某个集合内的所有request,并显示运行的结果:
环境变量
环境变量是Postman中很方便的功能,使用环境变量能使我们快速的再不同的环境中切换。做API测试时,常常会用到不同的环境。比如,以作者本人在所在的点睛组业务eapi模块举例,eapi有两套环境,一个是trunk环境,即测试环境,一个是online环境,即准线上环境。我们测试时,可以通过修改环境变量,而不需修改请求了。
点击postman右上角的environment,点击Manage Environments,再点击Add手动添加环境变量或者选择import从文件中导入环境变量。
如图分别为添加trunk环境和online环境的环境变量:
环境变量添加完成后,测试eapi接口时,在你要使用的变量名上附上双花括号,如:{{URL}}。在postman右上角选择要使用的环境环境即可:
全局变量和动态变量
全局变量是无论在哪个environment中都可以使用的变量。全局变量有两种创建方式:
1.通过代码来创建:postman.setGlobalVariable(variableName, variableValue)。这种创建方式一般可以在请求发起之前创建,即在Pre-request Script中添加,或者在请求发起之后创建,即在Tests标签中添加。
2.手工添加:手工添加方式和环境变量添加方式类似,这里不再讲述。
使用全局变量时需要加上花括号,如:{{ variableName }}
此外,Postman官方也提供了一些可以用在requests的动态变量,如{{$timestamp}}表示添加unix时间戳,{{$randomInt}}表示添加随机数 。动态变量只能用在request的URL,headers,body中以放在花括号中间的形式使用。
Pre-request Script
Postman测试沙箱是一个JavaScript执行环境,可以通过JS脚本来编写pre-request脚本。pre-request会在发送request之前执行。在用postman进行接口测试时,会经常碰到参数值加密的情况,比如使用签名sign MD5加密,我们可以在Pre-request Script中输入以下脚本:
var str = environment.variable_1 + environment.variable_2;
var hash = CryptoJS.MD5(str).toString();
postman.setEnvironmentVariable('hash', hash)
示例:以作者在业务测试中遇到的接口为例,开发提供的接口是:
http://10.121.214.95:9080/internalapi/sapi/crowdinfo/mobile/list?qid=1034157279&types=8,9&sign=6faffbf9c237f1abbb75e5eae0cd8e44,该接口的参数sign是加密的,sign=MD5(qid+” 8f00b204e9800998”), 每一次更改qid,sign值就需要重新进行一次MD5加密计算,如果每次都手动计算,再拷贝粘贴过去,过程太繁琐。我们就可以通过pre-request来做加密,如图,对sign加密并且将sign设置为环境变量,在发送request之前pre-request Script将被执行,这个”sign”变量的值将会替换{{sign}}。
Test Scripts
Postman的Tests标签可以用来为每个request编写测试代码,用来测试分析response,例如:检查状态码,检查响应串,验证JSON,检查header,限制应答时间等。测试代码会在发送request并且接收到responses后执行。执行后结果被显示在一个tab里,并在头部显示多少test通过了测试。
我们来看一些测试分析reponse的测试实例:
设置环境变量
postman.setEnvironmentVariable("key", "value");
获取环境变量
postman.getEnvironmentVariable("key");
检查reponse的body中是否含有字符串
tests["Body matches string"] = responseBody.has("string_you_want_to_search");
将XML的body转换为Json对象
var jsonObject = xml2Json(responseBody);
response的响应时间小于200ms
tests["Response time is less than 200ms"] = responseTime < 200;
状态码为200
tests["Status code is 200"] = responseCode.code === 200;
检查Json的值
var data = JSON.parse(responseBody);
tests["Your test name"] = data.value === 100;
内容类型存在(区分大小写)
tests["Content-Type is present"] = responseHeaders.hasOwnProperty("Content-Type");
示例:测试点睛eapi添加计划接口,编写测试脚本,执行request后,测试结果会出现在Tests tab下:
小结
Postman确实是一个很有用的接口测试工具,当然还有很多其他框架以及工具可用于接口自动化测试,大家可以各取所需。以上便是作者在工作实践中对postman用法的总结,希望对大家能有点帮助。