编   写:袁 亮
时   间:2017-01-16
说   明:postman 实现API自动化测试
一. 实现目的
- 接口开发调试工具
- 自动化测试
- 接口用例团队内共享
- 降低接口文档编写成本
二. 实现流程
- 
团队使用同一份文档 
 测试文档存入代码仓库
 使用前从代码仓库拉取导入
 修改完之后,重新导出,并更新代码仓库
 ps:后续为了降低代码层级,可以将API分成很多个collection,前期先合并成同一个
- 
使用工具产生文档 
 postman:界面gui模式
 newman:服务端cli模式
三. postman产生文档
- 通用层实现 在collection上做
- 所有接口都先放在同一个collection,后期根据模块拆分
 方便在同一个collection上实现一些通用逻辑
- 环境变量支持
 appid: 10101
 appsecret: 8e2160ec2b07f1faca9055be530bf09d
 host: http://api.shop.ci123.com/
 maxtime: 300
- pre-request中实现签名
- tests中实现统一的校验
 http状态码 200
 返回json,并且需要包含state和mess字段
 接口超时时间
 签名出错
 
- 所有接口都先放在同一个collection,后期根据模块拆分
- 目录层级规范
- 根据模块不同,创建不同的文件夹
- gui展示的原因,目录层级最多3层
- 每一个接口,都是一个文件夹 (所以实质上除了collection只有2层目录)
- 最底层的文件夹下,所有请求都是同一个接口的不同用例
 
- 具体实例实现
- url地址
 {{host}}/Item/getSkuByItemId?appid={{appid}}
- post参数增加两行
 expire {{expire}}
 mdstr {{mdstr}}
 ps:因为request只读的原因,不能追加,只能在每个地方都写一次这个
- 填入其他请求参数,构造每一种apiReturn的情况
 一个用例只实现一个对应apiReturn,这个return可能有多种情况,放在examples里
- 每个用例,必须增加tests,来告知是否通过
 除了最终成功的那个请求,其他请求的tests主要就是校验state状态码即可
- 执行成功的用例校验
 写请求:一般是校验对应的id是否正确,比如订单id,商品id等
 读请求:解析对应的json数据格式,是否包含什么样的字段等等
 ps:后续谁有空可以看下,是否可以自己定义模板,现在看到的那些模板只能选择使用,不能自己创建
 
- url地址
- 开发调试规范
- 从代码仓库把文档导入到postman
- 接口编写过程中,使用这个来进行调试,所有情况必须测到
 有多少个state返回,就最少有多少个接口用例
- 接口全部写完之后,必须通过runner来确保所有用例全部跑通
 不要出现改到后面,前面的跑过的用例又跑不了
- 写完之后,把postman里的数据导出到git仓库中
 
四、自动化测试 todo
- 安装newman环境
- 定时或者在git的钩子里设置
- 拉取对应的文档,执行测试
- 测试结果入库
- 展示报警
 工作台展示
 邮件、短信报警
五、postman常用操作
- 设置
 皮肤设置
 返回值解析设置:json auto的时候,没有自动识别是json
- 环境变量设置与使用
- 数据导入导出
 collection导入导出
 整体导入导出
- 复制修改
 用例复制,文件夹复制等
- examples使用
 可以配合做mock server
- runner使用
- console控制台调试
- 搜索
- API文档发布
 免费版有限制,可以大概看看
- 官方文档,可以快速看一遍
- 错误提示
 特别是全局变量中的
- runner里执行的时候,一定要注意request的是要保存里的,不然更改了是无效的
 send本身是直接起效
- ctrl + s保存修改
- Codeception