基于 Postman 接口自动化场景设计

发表于:2020-7-02 08:14

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:糖小姐    来源:掘金

  一个强大的工具,基于 Postman 接口自动化场景设计
  使用Xmind或者Yaml 设计 postman 自动化场景
  引言
  postman是一个比较轻量级的接口测试工具,在单个接口的测试表现优秀。在批量测试接口方面则提供了Runner Collections这种方式,虽然可以用来做流程测试,但在管理上不是很方便。例如:在postman建立一个collection作为接口文档,然后再建立另外一个collection作为场景测试,接着从接口文档的collection中挑选接口,并复制到场景测试的collection中,而且可能在不同的场景都共用同一个接口,这种方式是听不错的,只是当接口的版本升级之后,需要在场景中找出所有对应的接口进行修改,这样在管理上会比较麻烦。
  概念
  这个工具根据Xmind或Yaml所写的场景流程,从接口文档的collection中生成一个场景测试的collection,这样即使版本升级,只需要重新生成一次即可,相当方便,同时也提供了一些方便的设参方式和断言。
  能做什么
  管理方便 。只需要管理接口文档的collection和Xmind/Yaml脚本。
  场景流程更直观 。在Xmind/Yaml上可以直观的看到整个流程,在细节上也可以看到每个接口的参数定义,以及断言内容。
  代码编写简化 。在测试行业中,普遍都是代码能力比较差,虽然测试不需要特别强的代码编写能力,postman在Tests界面中也提供了一些快捷片段,但是还是不足够简化,而且也不全面,比如对请求的参数进行签名。
  提供一些快捷的函数。postman提供的内置函数还是比较少的,比如随机生成32的UUID,md5,获取当前时间,获取前7天,前30天的日期,参数签名等等,这些都需要自己手动写代码。
  无依赖性。本工具只是一个脚本转换成Postman的脚本工具,即使以后不用,完全可以自己维护Postman的脚本。
  .......
  项目地址: 码云
  项目地址: github
  先来看看效果图
  如何上手
请在文本框输入文字
  使用 pip 安装PostScene
 pip install -U PostScene
  调用
   from post_scene.post_scene import PostScene
  yaml_path = './yaml/demo.yaml'  # 脚本文件的路径
  xmind_path = './xmind/demo.xmind'  # 脚本文件的路径
  api_document_path = './api_document/demo.postman_collection.json'  # postman json data 文件的路径
  api_document_url = 'https://www.getpostman.com/collections/马赛克马赛克马赛克马赛克'  # 也可以使用Postman的share link
  # PostScene.covert(yaml_path, api_document_path,scene_dirs='./scene')
  # PostScene.covert(xmind_path, api_document_path,scene_dirs='./scene')
  PostScene.covert(yaml_path, api_document_path,scene_dirs='./scene')
  例子
  新建一个文件,名字叫什么不重要,但为了迭代开发的考虑,最好还是加上版本号。
 demo-scenev1.0.yaml
  脚本编写
name: demo-scenev1.0                                         #collection 的名字
  scene:
  name: 下单流程                                             #collection文件夹的名字
  scene:
  登陆:                                                   #API接口名称
  pre:                                                 #接口请求前脚本
  sign:                                              #参数签名
  secret: 1850e165f1fc19420f2ba3d3a1a5ffe4
  set:                                               #设置变量值
  userName: user
  password: user123
  time: $$times                                    #获取现在的时间
  onceToken: $$uuid32                              #生成32位的uuid
  tests:                                               #请求后脚本
  assert:                                            #请求后断言
  express:
  content: $json.data.code === '1'               #断言返回的json数据的code 是否等于1
  set:                                           #断言成功保存token和uid数据
  token: $json.data.token
  uid: $json.data.uid
  通过餐厅名字搜索餐厅:
  pre:
  sign:
  secret: 1850e165f1fc19420f2ba3d3a1a5ffe4
  set:
  canteenName: 喜茶
  tests:
  assert:
  expect:                                         #断言返回的canteenList的每一个对象的名称都包含喜茶
  content: $json.data.canteenList
  item: $it.name
  include: 喜茶
  set:
  canteenId: $$find(json.data.canteenList, it.canteenName == '喜茶GO').canteenId  #获取喜茶Go的CanteenId
  通过商品名字搜索商品:
  pre:
  sign:
  secret: 1850e165f1fc19420f2ba3d3a1a5ffe4
  ref: canteenId
  set:
  goodsName: 奥利奥千层
  tests:
  assert:
  expect:
  content: $json.data.goodsList
  item: $item.name
  include: 奥利奥千层
  set:
  goodsId: $$find(json.data.goodsList, it.goodsName == '奥利奥千层').goodsId
  加入购物车:
  pre:
  sign:
  secret: 1850e165f1fc19420f2ba3d3a1a5ffe4
  ref: goodsId
  set:
  count: 1
  tests:
  assert:
  express:
  content: $json.code === '1'
  set:
  pocketId: $json.data.pocketId
  .......
  脚本转换
  使用git或者浏览器下载本项目,再用pycharm打开。
  在Postman中选择你已经准备好的api文档collection 然后导出。这里导出为 demo.postman_collection.json
  3.把导出的文档放入项目中的api_document 脚本放入xmind或yaml
  4. 打开src文件中的Index.py 把xmind_path和api_document_path改成你的,右键 Run Index。
  5.生成的场景文件放在src/scene文件夹中,使用postman的import 把他导入
  6. 最后可以开始Run collection啦
  如果你对Postman的Script很熟悉,那以下的内容对你来说绝对是无障碍的。不熟悉也没关系,只要照猫画虎,也能完成脚本的编写,设计这个初衷就是为了降低门槛。教程的讲解都是用yaml来讲解,因为用xmind讲解不是很方便,要截很多图。xmind的话,直接看demo.xmind就好啦。
  学前须知 : 每一个测试用例都由两部分组成 pre(请求前) 和 tests(请求后) ,pre可以没有,但tests断言一定要有,不然没有意义。每一个测试用例的名称必须和文档中的collection的接口名称一致。这是规范。
  
      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号