接口测试之postman使用

Posted Qtest之道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口测试之postman使用相关的知识,希望对你有一定的参考价值。

简介


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

安装

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

发送请求

接口测试之postman使用

 如图所示,解释如下:

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

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

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

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

  5. send发送请求

集合

 集合,即是postman中的Collections,类似文件夹,可以把同一个项目的请求放在一个集合里方便管理和分享。测试人员下次测试可以直接从集合中找到要执行的测试case。可以让单个的request分组到一起,对每个request都有很多个testcase,都分组收藏到集合里面,进行自动化测试和回归测试。如果想将自己的集合分享给团队内其他人,可以点击Share按钮进行分享: 

接口测试之postman使用

Postman还支持一键运行整个集合内的测试,点击Start Test按钮,Postman将会开始运行某个集合内的所有request,并显示运行的结果:

接口测试之postman使用

环境变量

环境变量是Postman中很方便的功能,使用环境变量能使我们快速的再不同的环境中切换。做API测试时,常常会用到不同的环境。比如,以作者本人在所在的点睛组业务eapi模块举例,eapi有两套环境,一个是trunk环境,即测试环境,一个是online环境,即准线上环境。我们测试时,可以通过修改环境变量,而不需修改请求了。

点击postman右上角的environment,点击Manage Environments,再点击Add手动添加环境变量或者选择import从文件中导入环境变量。

如图分别为添加trunk环境和online环境的环境变量:

接口测试之postman使用

接口测试之postman使用

环境变量添加完成后,测试eapi接口时,在你要使用的变量名上附上双花括号,如:{{URL}}。在postman右上角选择要使用的环境环境即可:

接口测试之postman使用

全局变量和动态变量

全局变量是无论在哪个environment中都可以使用的变量。全局变量有两种创建方式:

1.通过代码来创建:postman.setGlobalVariable(variableName, variableValue)。这种创建方式一般可以在请求发起之前创建,即在Pre-request Script中添加,或者在请求发起之后创建,即在Tests标签中添加。 

2.手工添加:手工添加方式和环境变量添加方式类似,这里不再讲述。

使用全局变量时需要加上花括号,如:{{ variableName }}

此外,Postman官方也提供了一些可以用在requests的动态变量,如{{$timestamp}}表示添加unix时间戳,{{$randomInt}}表示添加随机数 。动态变量只能用在request的URL,headers,body中以放在花括号中间的形式使用。

接口测试之postman使用

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}}。

接口测试之postman使用

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确实是一个很有用的接口测试工具,当然还有很多其他框架以及工具可用于接口自动化测试,大家可以各取所需。以上便是作者在工作实践中对postman用法的总结,希望对大家能有点帮助。


以上是关于接口测试之postman使用的主要内容,如果未能解决你的问题,请参考以下文章

接口测试实战接口自动化之持续集成(postman+newman+jenkins)

接口测试实战postman之变量与沙盒实战

postman之接口测试技巧

接口测试之-postman

接口测试之postman使用

接口测试实战接口测试之cookie实战