接口测试 接口测试工具 postman

鱼肚白 · 2016年04月29日 · 最后由 Test44 回复于 2018年01月31日 · 3139 次阅读

开始研究使用 postman 源于在一个测试群里一位大牛说 postman 在数据包的拦截处理方面很优秀,正好我有个工具是拦截 http 请求转化为 robotframe 的自动化用例的,所有就开始了对它的研究使用,实践后发现 postman 这个工具设计思路非常好,使用起来也很方便,作为接口测试工具甚至可以完成部分自动化工作,所以纪录一下使用心得。

postman 安装:
postman 的安装就在谷歌应用商店中直接搜索 postman,如下图一,然后进行安装,安装后在 chrome 右上角会出现如图二所示图标

图一


图二

在地址栏中输入 chrome://apps 后出现如图三所示,点击 postman 打开 postman

图三

postman 使用:
首先打开图二中所示图标,打开拦截功能并且填写 filter 规则,打开 postman,开始访问被测对象

postman 主题的功能如图四所示

图四
collections 区域如图五所示

图五

postman 设计最精髓的地方就在于对于接口的持久化保存,它可以根据模块来保存这些接口并且可以保存这些接口在不同入参情况下的响应,这些持久化的接口其实就是另外一种测试用例,postman 将它们运用在了接口执行方便

postman runner 使用:
1.在接口详情的 tests 区域编写一些校验条件,如图六所示,编辑完成后保存

图六

2.点击 runner 打开接口运行区域,如图七所示,选择好要运行的模块或者接口后点击 start test,结果如图八所示

图七


图八

实践中的一些问题:
Q.在发送一些请求 cookie 总是带不上去?

A:经过抓包发现,postman 发送出去的请求 headers 中最多携带 8 个字段,当 cookies 所处位置大于 8 时,就不会被发送,所以这个时候需要删除一些无关紧要的字段如 Origin 等。应该属于 postman 的一个 bug,具体原因未知,得阅读源码

Q:很多请求是需要登陆的,也就是需要携带 cookie 的,总不能每个请求都手动去修改 cookie 吧?
A:postman 提供了 environments 功能,可以把 cookie 设置成如图九所示,把 cookie 变量化,而用例中已图十中的参数化后的{{cookie}}来代替,但是现在 tests 中暂时不能实现变量化

图九


图十

postman 用户手册:
http://www.getpostman.com/docs/

共收到 46 条回复 时间 点赞

不错, 期待介绍更多 postman 的细节

#1 楼 @seveniruby 嗯.postman 简单易用,但是设计理念很好。

想问下 runner 楼主是花 9.99 刀自己购买的吗~

学习了

#3 楼 @yiyusixing 不是的,不花钱,免费的功能。图四的左上角,点击就可以

很好奇,曾经玩过 chrome 的插件开发,是否可以基于 postman 之上二次开发一套接口测试框架?

太实用了

—— 来自 TesterHome 官方 安卓客户端

楼主,postman 的接口数据的正确性是否与校验呢,还是我只是需要验证接口返回参数,不必验证接口返回参数的值是否正确呢?

#8 楼 @allanwendy 你可以验证所有 response 内容

#9 楼 @oscar 因为数据的变化,所以 reponse 写死的话,不太现实,我跟开发沟通了,现在我们暂时校验接口返回的数据结构即可,不用验证接口返回数据

赞,重新学习的 postman

#11 楼 @_test 更多功能,等你来体验

#10 楼 @allanwendy 我的意思,如果你想验证也是可以的,有些接口返回的数据是固定的,比如搜索接口,返回的结果数据数组长度不能为 0

#6 楼 @lose 可以,你安装以后可以在 C:\Documents and Settings<$ 你登陆系统的这个用户名>\Local Settings\Application Data\Google\Chrome\User Data\Default\Extensions 下面找到并且修改源码,打包安装

#8 楼 @allanwendy 接口数据当然可以校验了,postman 本身提供了对于返回格式和返回值的校验,包括是否包含,如果是 json 的话可以精确匹配

#10 楼 @allanwendy postman 有个环境变量的概念,但是我试了一下,环境变量只在 request 和 response 中生效,在 test 中没用,不然可以做参数化的

挺详细的

介绍地非常详细

#21 楼 @cesc 谢谢。。

提醒下楼主,postman 有两种变量,环境变量和全局变量。
前者针对整个环境起作用,后者只针对某个独立的 collection 起作用,而且两者都是可以写在 tests 中做参数化的。
另外的话,像简单的 loop 循环调用几个 request 也是支持的,像这种postman.setNextRequest("请求名")

#23 楼 @yusufchang 感谢,学习到了。。在 tests 中做参数化开始是参照{{param}}的方式引入的,结果无效。。你提供的方式试验了一下是可以的,赞

有代码能力的,可以用 httpclient 包,上网搜下,对付接口简直如,探囊取物

—— 来自 TesterHome 官方 安卓客户端

#25 楼 @lamianxiaodian 有。。我们使用的是 python 的 requests

#26 楼 @1875884881 啊 谢谢,我一开始版本太老了,那个版本 RUNNER 好像要 9.99 刀~~~现在好了,正在努力把所有的接口填上,然后看一下 test 中参数化的内容,然后看到下面回复你们使用 requests。也是在做接口吗?还是在做别的~

#27 楼 @yiyusixing 做接口的,robotframe+jenkins+python 做的接口,发包是用的 requests 做二次封装的关键字。

移动应用的接口能搞么

#29 楼 @kesha0 可以,mac 和 windows 上都可以作为代理,配置相应的 IP 和 port 就可以。

楼主,我想请问下,interceptor 拦截器功能你是点开就能用了吗?我已经安装了 interceptor 并开启了,在 postman 中打开仍一直提示让我先去安装扩展。

#31 楼 @cyy 是的,我是 ok 的,你的安装方式是什么,我是直接去商店里下载的这两个

#32 楼 @1875884881
我是下载了插件,在 Google 浏览器中通过 “加载已解压的扩展程序” 加进来的。
是不是一定要从商店下啊,商店进不去😥

#33 楼 @cyy 可以不用商店的下载,postman 的官网去下载也行,需要 ***

#34 楼 @allanwendy
问题是不会 ***😂
我先去试试,感谢~

#36 楼 @allanwendy
恩恩,可以了,谢谢~😊

我想问一下你那个什么工具怎么把拦截到到 http 请求直接转化为 robotframework 的 case 的

#24 楼 @1875884881 求个 Q 私会,加我下 QQ49875183

#38 楼 @wanxi3 你好,自己用 python 写的,集成到 ride 界面里面的

#40 楼 @1875884881 能不能开一贴,讲讲

Keith Mo Postman 做接口自动化测试-1. 入门篇 中提及了此贴 12月05日 09:58

求加大神 qq 微信

47楼 已删除

提个问:Rre request Script 里面请求的返回值怎么取到

Yusufchang 回复

谢谢你,给了我一个思路

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册