接口测试之postman使用

2017-04-24   出处: Qtest之道  作/译者:郭珂珂

简介

Postman是chrome的一个插件,是常用的接口测试工具,能够发送任何类型的http请求,支持GET/PUT/POST/DELETE等。Postman非常简单易用,通过填写URL,header,body等就可以发送一个请求,用来测试api接口非常方便。


                                     



安装

可以通过chrome插件或者Mac app进行安装。

发送请求



 如图所示,解释如下:

  1. 指发送请求的方式,有很多种方式,最常用的是GET和POST。点击下拉列表可以看到共15种请求方式供选择。

  2. 请求的URL,即接口地址

  3. 点击可以以键值对的方式添加URL参数

  4. 从左到右依次是:身份验证,Header字段,Http Body,Pre-request脚本,Test脚本。

  5. 表示接口返回的数据,该数据有三种展现形式,pretty,raw,preview,这三种可以理解为高亮格式、普通文本格式、预览

  6. 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用法的总结,希望对大家能有点帮助。

                                                        



声明:本文为本站编辑转载,文章版权归原作者所有。文章内容为作者个人观点,本站只提供转载参考(依行业惯例严格标明出处和作译者),目的在于传递更多专业信息,普惠测试相关从业者,开源分享,推动行业交流和进步。 如涉及作品内容、版权和其它问题,请原作者及时与本站联系(QQ:1017718740),我们将第一时间进行处理。本站拥有对此声明的最终解释权!欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,与我们的编辑和其他窝友交流。
1464° /14614 人阅读/3 条评论 发表评论

邓智群  2017-04-26

postman确实是很优秀的插件


登录 后发表评论