Skip to main content
Join the official 2020 Python Developers SurveyStart the survey!

一个强大的工具,基于 Postman 接口自动化场景设计

Project description

PostScene —————— 一个强大的工具,基于 Postman 接口自动化场景设计


使用Xmind或者Yaml 设计 postman 自动化场景

背景: postman是一个比较轻量级的接口测试工具,在单个接口的测试表现优秀。在批量测试接口方面则提供了Runner Collections这种方式,虽然可以用来做流程测试,但在管理上不是很方便。例如:在postman建立一个collection作为接口文档,然后再建立另外一个collection作为场景测试,接着从接口文档的collection中挑选接口,并复制到场景测试的collection中,而且可能在不同的场景都共用同一个接口,这种方式是听不错的,只是当接口的版本升级之后,需要在场景中找出所有对应的接口进行修改,这样在管理上会比较麻烦。

思想: 这个工具根据Xmind或Yaml所写的场景流程,从接口文档的collection中生成一个场景测试的collection,这样即使版本升级,只需要重新生成一次即可,相当方便,同时也提供了一些方便的设参方式和断言。

  1. 管理方便 。只需要管理接口文档的collection和Xmind/Yaml脚本。
  2. 场景流程更直观 。在Xmind/Yaml上可以直观的看到整个流程,在细节上也可以看到每个接口的参数定义,以及断言内容。
  3. 代码编写简化 。在测试行业中,普遍都是代码能力比较差,虽然测试不需要特别强的代码编写能力,postman在Tests界面中也提供了一些快捷片段,但是还是不足够简化,而且也不全面,比如对请求的参数进行签名。
  4. 提供一些快捷的函数。postman提供的内置函数还是比较少的,比如随机生成32的UUID,md5,获取当前时间,获取前7天,前30天的日期,参数签名等等,这些都需要自己手动写代码。
  5. 无依赖性。本工具只是一个脚本转换成Postman的脚本工具,即使以后不用,完全可以自己维护Postman的脚本。 .......

先来看看效果图

输入图片说明

安装

使用 pip 安装PostScene

pip install -U PostScene

例子


  • 新建一个文件,名字叫什么不重要,但为了迭代开发的考虑,最好还是加上版本号。

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
.......
  • 脚本转换
  1. 使用git或者浏览器下载本项目,再用pycharm打开。

  2. 在Postman中选择你已经准备好的api文档collection 然后导出。这里导出为 demo.postman_collection.json

  1. 把导出的文档放入项目中的api_document 脚本放入xmind或yaml
  1. 打开src文件中的Index.py 把xmind_path和api_document_path改成你的,右键 Run Index。

输入图片说明

  1. 生成的场景文件放在src/scene文件夹中,使用postman的import 把他导入
  1. 最后可以开始Run collection啦

教程


如果你对Postman的Script很熟悉,那以下的内容对你来说绝对是无障碍的。不熟悉也没关系,只要照猫画虎,也能完成脚本的编写,设计这个初衷就是为了降低门槛。教程的讲解都是用yaml来讲解,因为用xmind讲解不是很方便,要截很多图。xmind的话,直接看demo.xmind就好啦。

学前须知 : 每一个测试用例都由两部分组成 pre(请求前)tests(请求后) ,pre可以没有,但tests断言一定要有,不然没有意义。每一个测试用例的名称必须和文档中的collection的接口名称一致。这是规范。

脚本语法标签

写在最后: 目前只提供了这些内置函数,虽然不多但也够用,如果你有什么特别的需要,可以提一个issues
最后,祝你测试愉快 :blush:


编码不易,如果你觉得这是一个不错的工具,并且支持我继续努力,那就打赏几块钱给本仙女买杯奶茶吧 :stuck_out_tongue_closed_eyes:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for PostScene, version 0.8.2
Filename, size File type Python version Upload date Hashes
Filename, size PostScene-0.8.2-py3-none-any.whl (28.1 kB) File type Wheel Python version py3 Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page