postman 实现API自动化测试

编 写:袁 亮
时 间:2017-01-16
说 明:postman 实现API自动化测试


一. 实现目的

  1. 接口开发调试工具
  2. 自动化测试
  3. 接口用例团队内共享
  4. 降低接口文档编写成本

二. 实现流程

  1. 团队使用同一份文档
    测试文档存入代码仓库
    使用前从代码仓库拉取导入
    修改完之后,重新导出,并更新代码仓库
    ps:后续为了降低代码层级,可以将API分成很多个collection,前期先合并成同一个

  2. 使用工具产生文档
    postman:界面gui模式
    newman:服务端cli模式

三. postman产生文档

  1. 通用层实现 在collection上做
    • 所有接口都先放在同一个collection,后期根据模块拆分
      方便在同一个collection上实现一些通用逻辑
    • 环境变量支持
      appid: 10101
      appsecret: 8e2160ec2b07f1faca9055be530bf09d
      host: http://api.shop.ci123.com/
      maxtime: 300
    • pre-request中实现签名
    • tests中实现统一的校验
      http状态码 200
      返回json,并且需要包含state和mess字段
      接口超时时间
      签名出错
  2. 目录层级规范
    • 根据模块不同,创建不同的文件夹
    • gui展示的原因,目录层级最多3层
    • 每一个接口,都是一个文件夹 (所以实质上除了collection只有2层目录)
    • 最底层的文件夹下,所有请求都是同一个接口的不同用例
  3. 具体实例实现
    • 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:后续谁有空可以看下,是否可以自己定义模板,现在看到的那些模板只能选择使用,不能自己创建
  4. 开发调试规范
    • 从代码仓库把文档导入到postman
    • 接口编写过程中,使用这个来进行调试,所有情况必须测到
      有多少个state返回,就最少有多少个接口用例
    • 接口全部写完之后,必须通过runner来确保所有用例全部跑通
      不要出现改到后面,前面的跑过的用例又跑不了
    • 写完之后,把postman里的数据导出到git仓库中

四、自动化测试 todo

  1. 安装newman环境
  2. 定时或者在git的钩子里设置
  3. 拉取对应的文档,执行测试
  4. 测试结果入库
  5. 展示报警
    工作台展示
    邮件、短信报警

五、postman常用操作

  1. 设置
    皮肤设置
    返回值解析设置:json auto的时候,没有自动识别是json
  2. 环境变量设置与使用
  3. 数据导入导出
    collection导入导出
    整体导入导出
  4. 复制修改
    用例复制,文件夹复制等
  5. examples使用
    可以配合做mock server
  6. runner使用
  7. console控制台调试
  8. 搜索
  9. API文档发布
    免费版有限制,可以大概看看
  10. 官方文档,可以快速看一遍
  11. 错误提示
    特别是全局变量中的
  12. runner里执行的时候,一定要注意request的是要保存里的,不然更改了是无效的
    send本身是直接起效
  13. ctrl + s保存修改
  14. Codeception

发表评论