(一)前言:

之前搞自动化接口测试,由于接口的特性,要验证接口返回xml中的数据,所以没找到合适的轮子,就自己用requests造了个轮子,用着也还行,不过就是case管理有些麻烦,近几天又回头看了看postman也可以玩的很溜,所以和大伙分享下,但是postman也有自己的弱点,还是需要根据自己项目的特点来选择适合的工具。废话少说,开始...

(二)安装和介绍

1、首先安装chrome,然后在chrome的商店里搜postman,https://chrome.google.com/webstore/search/postman?t=http://webstore.google.com ,然后有位同学对整个界面做了介绍, 转一下:http://bayescafe.com/tools/use-postman-to-test-api-automatically.html

  1. Collections:在Postman中,Collection类似文件夹,可以把同一个项目的请求放在一个Collection里方便管理和分享,Collection里面也可以再建文件夹。如果做API文档的话,可以每个API对应一条请求,如果要把各种输入都测到的话,就需要每条测试一条请求了。这里我新建了一个example用于介绍整个流程,五个API对应五条请求。这个Collection可以通过https://www.getpostman.com/collections/96b64a7c604072e1e4ee导入你自己的Postman中。

  2. 上面的黑字注册是请求的名字,如果有Request description的话会显示在这下面。下面的蓝字是保存起来的请求结果,点击可以载入某次请求的参数和返回值。我会用这个功能给做客户端的同事展示不同情况下的各种返回值。保存请求的按钮在15.

  3. 选择HTTP Method的地方,各种常见的不常见的非常全。

  4. 请求URL,两层大括号表示这是一个环境变量,可以在16的位置选择当前的environment,环境变量就会被替换成该environment里variable的值。

  5. 点击可以设置URL参数的key和value

  6. 点击发送请求

  7. 点击保存请求到Collection,如果要另存为的话,可以点击右边的下箭头

  8. 设置鉴权参数,可以用OAuth之类的

  9. 自定义HTTP Header,有些因为Chrome原因不能自定义的需要另外装一个插件Interceptor,在16上面一行的卫星那里

  10. 设置Request body,13那里显示的就是body的内容

  11. 在发起请求之前执行的脚本,例如request body里的那两个random变量,就是每次请求之前临时生成的。

  12. 在收到response之后执行的测试,测试的结果会显示在17的位置

  13. 有四种形式可以选择,form-data主要用于上传文件。x-www-form-urlencoded是表单常用的格式。raw可以用来上传JSON数据

  14. 返回数据的格式,Pretty可以看到格式化后的JSON,Raw就是未经处理的数据,Preview可以预览HTML页面

  15. 点击这里把请求保存到2的位置

  16. 设置environment variables和global variables,点击右边的x可以快速查看当前的变量。

  17. 测试执行的结果,一共几个测试,通过几个。

这个界面就是免费版的主要内容,和其他API测试工具相比,已经足够好用。如果要使用自动化测试,需要购买9.99美金的Jetpacks,暂时不想购买的话可以试一下Team版Postman。现在是可以免费试用的,不但拥有Jetpacks的功能,还能与其他账户同步Collection。

(三)实例

这里就以我的一个模块的返回验证来做例子了,两个模块间是http请求,返回的是xml数据,要验证,返回数据的个数,传递的参数

再看验证点Tests:这里的几种snippets很好用,而且这里使用的是js,所以会点js就可以自己写逻辑啦

点击send之后,可以看到返回的数据

tests的结果:

我要验证的是headinfo里的status=0和returnNum>0,下面是test的结果,说明测试通过,这时再回头看Tests中的内容就会发现,tests['status'] = s.$.status==='0'中tests['status'] 被赋成s.$.status==='0',若s.$.status==='0'为true,则case通过,否则fail,就是这么简单,其实主要的关键就是要找到你的验证点,如果只验证返回code,直接用右侧的snipplets中的就可以,tests["Status code is 200"] = responseCode.code === 200; snipplets就自己用蹩脚的英语理解下吧,responsebody包含字符串、xml转json、responsebody是一个字符串、json变量校验、response header 校验、返回时间、status code、还有tiny validator,其实在Tests里是支持js的,所以想怎么写就怎么写,前提是得会点js。

在使用js的时候,需要调试变量,或者说怎么知道我要验证的变量取值是什么呢?想到了windows.alert(),可是什么也没出,然后就是console.log(),发现没有地方能出console,然后google了下,发现chrome是支持的,就是使google develop tools 支持postman :

http://blog.getpostman.com/2014/01/27/enabling-chrome-developer-tools-inside-postman/

(1)chrome://flags/ ,启用下面这个

(2) 然后重启chrome和postman,F12打开chrome develop tools ,再点send,就可以log出我们要的东西了

有了上面这些方法,再复杂的接口测试我们都能搞定,然后就是把设计好的case都放在一个collection中,就是类似于testsuite,然后点击左上角的Runner来执行collection

附录:这位同学的例子很好的展示了通过设置环境变量来处理这类请求有先后关系的case,很好的例子,转过来啦

http://bayescafe.com/tools/use-postman-to-test-api-automatically.html

1. 注册

生成一个随机字符串作为用户名和昵称

postman.setEnvironmentVariable("random_username", ("0000" + (Math.random()*Math.pow(36,4) << 0).toString(36)).slice(-4)); 

发起请求

POST /index.php/users HTTP/1.1
Host: postmanexample.sinaapp.com
Cache-Control: no-cache Postman-Token: 76791813-aac2-71fb-cad4-3e737f37c4d0 Content-Type: application/x-www-form-urlencoded username=2mjk&password=123456&nickname=2mjk 

运行测试、检查结果

tests["Status code is 201"] = responseCode.code === 201; 

2. 登录

直接用刚才生成的环境变量发起请求

POST /index.php/authentication HTTP/1.1
Host: postmanexample.sinaapp.com
Cache-Control: no-cache Postman-Token: aac7d0ac-e0e3-ecf2-39da-b8dca672e3d7 Content-Type: application/x-www-form-urlencoded username=2mjk&password=123456 

运行测试、检查结果,并将返回的token记录下来

tests["Status code is 200"] = responseCode.code === 200; var data = JSON.parse(responseBody); postman.setEnvironmentVariable("token", data.token); 

3. 添加一张卡

先生成一个卡号和卡名

postman.setEnvironmentVariable("random_cardno", Math.round(Math.random()*9999999));postman.setEnvironmentVariable("random_cardname", ("0000" + (Math.random()*Math.pow(36,4) << 0).toString(36)).slice(-4)); 

然后发起请求,这里调用了刚才获取到的Token,放在header的自定义字段里作为鉴权(SAE不能用Authorization这个字段,不清楚原因)

POST /index.php/cards HTTP/1.1
Host: postmanexample.sinaapp.com
X-Authorization: d4c4a0b7b36c73e7a13b7e24a596093b Cache-Control: no-cache Postman-Token: d44d573f-f17a-366c-2cd7-1d5b8b709233 Content-Type: application/x-www-form-urlencoded cardno=1385526&desc=2mo8 

运行测试

tests["Status code is 200"] = responseCode.code === 200; 

4. 查询刚才生成的卡

发起请求,调用了刚才生成的卡号

GET /index.php/cards/1385526 HTTP/1.1
Host: postmanexample.sinaapp.com
Cache-Control: no-cache Postman-Token: 1e5aca57-c3bb-7404-2791-c639cd60b5c8 

运行验证,和刚才生成的卡名对比,并记录新卡的ID

var data = JSON.parse(responseBody); tests["check cardname"] = data.desc === environment.random_cardname; postman.setEnvironmentVariable("new_card_id", data.id); 

5. 充值

发起请求,使用了刚才获得的新卡ID

POST /index.php/deposit HTTP/1.1
Host: postmanexample.sinaapp.com
X-Authorization: d4c4a0b7b36c73e7a13b7e24a596093b Cache-Control: no-cache Postman-Token: 388c95e0-b5ce-9bbf-5816-084db7523384 Content-Type: application/x-www-form-urlencoded cardid=1&amount=10 

运行验证(由于是新建的用户,没有余额,无法给卡片充值,故返回403 Forbidden)

tests["Status code is 403"] = responseCode.code === 403;

文章来源:http://www.cnblogs.com/sparkling-ly/p/5807238.html

使用Postman玩转接口测试相关推荐

  1. postman如何测试php接口_使用postman玩转接口测试

    (一)前言: 之前搞自动化接口测试,由于接口的特性,要验证接口返回xml中的数据,所以没找到合适的轮子,就自己用requests造了个轮子,用着也还行,不过就是case管理有些麻烦,近几天又回头看了看 ...

  2. 较快入门postman,使用postman玩转接口测试 一

    (一)前言: 本文属于转载问,我个人觉得总结还比较全面,图文展示,新手入门比较好,我在自己的项目使用,遇到的具体问题会写在下篇postman原创文章中,本文转载自 http://www.cnblogs ...

  3. SpringBoot | 第十五章:基于Postman的RESTful接口测试

    前言 从上一章节开始,接下来的几个章节会讲解一些开发过程中配套工具的使用.俗话说的好,工欲善其事,必先利其器.对于开发人员而言,有个好用的工具,也是一件事半功倍的事,而且开发起来也很爽,效率也会提升很 ...

  4. postman 怎么调试pos_SpringBoot|第十五章:基于Postman的RESTful接口测试

    前言 从上一章节开始,接下来的几个章节会讲解一些开发过程中配套工具的使用.俗话说的好,工欲善其事,必先利其器.对于开发人员而言,有个好用的工具,也是一件事半功倍的事,而且开发起来也很爽,效率也会提升很 ...

  5. Postman~做接口测试

    在工作中,接口测试势必是最有效的测试途径.因此,学习接口测试的基础和工具是很有必要的,从Postman开始吧- 目录 1. 接口测试简介 2. 接口测试流程及用例设计 3.使用Postman执行接口测 ...

  6. chrome postman插件_接口测试工具之Postman(原创)

    前言: 说到web服务接口,目前主流已经从SOAP的Web Service接口转为REST API接口了, 所以我们主要就是讲解对REST API服务接口的测试. 实际上众多开发者对REST的理解程度 ...

  7. 玩转接口测试,那些必备的技能

    1.什么是接口测试? 定义:测试系统组件间接口的一种测试.主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点,重点是检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等: 目的 ...

  8. SoapUI、Jmeter、Postman三种接口测试工具的比较分析

    前段时间忙于接口测试,也看了几款接口测试工具,简单从几个角度做了个比较,拿出来与诸位分享一下.本文从多个方面对接口测试的三款常用工具进行比较分析,以便于在特定的情况下选择最合适的工具,或者使用自己编写 ...

  9. PostMan 之 Mock 接口测试

    在测试的时候经常会碰到后端开发工程师的接口还没有开发完成,但是测试任务已经分配过来.没有接口怎么测试呢? 测试人员可以通过 mock server 自己去造一个接口来访问.mock server 可用 ...

最新文章

  1. python基于条件、规则构建已有字典的子集
  2. 人生致命的8个经典问题[转]
  3. CNN应用之SPP(基于空间金字塔池化的卷积神经网络物体检测)-ECCV 2014-未完待续
  4. 解决安装kali 2020.1版本后的中文乱码问题:只需要安装中文字体(而不需要像之前版本那样需要选择locales和编码)。
  5. 微软职位内部推荐-Software Development Engineer 2
  6. 四川大学计算机科学与技术专业分数线,2015年四川大学计算机科学与技术硕士考研复试分数线是290分...
  7. 面试系统设计_系统设计面试问题–您应该知道的概念
  8. Docker基础入门总结
  9. linux文件系统初始化过程(6)---执行init程序
  10. 选择多级分类_② 供应商管理(分类、评估、选择、绩效、集成、供应商过多的对策、多级供应商管理)...
  11. 序列标注模型结果评估模块seqeval学习使用
  12. 马哥linux2018目录,2018-01-02 马哥Linux学习笔记—Linux系统基础使用入门
  13. ftp服务器显示密码,Ftp服务器怎么查看密码
  14. 五款优秀重复文件查找工具
  15. python爬取王者荣耀所有皮肤
  16. oem是代工还是贴牌_OEM与ODM两者之间有什么区别 如何区分代工生产和商标授权...
  17. H5小游戏开发多少钱
  18. 二值化神经网络(BNN)综述
  19. 历届真题 杨辉三角形【第十二届】【省赛】【B组】
  20. vue-admin-template 花裤衩 未登录 显示列表

热门文章

  1. 伟大的教育家:美国数学免费教学大神
  2. 石油产量预测文献调研
  3. 逻辑学和计算机科学,数学、逻辑与计算机科学的关系
  4. Java基础-注解机制详解
  5. apple 产品鉴定
  6. Matlab:查找符合条件的数组元素
  7. Unity Accelerator本地服务器加速Unity项目资源载入速度
  8. 实值遗传算法求解函数极值问题(基于MATLAB)
  9. RHCE7 认证考试练习
  10. 【图像检索】基于HSV的图像检索附matlab代码