新手区 FastAPI + Vue 接口自动化测试工具 Demo: apiAutoTestWeb

柒意 · 2021年05月02日 · 最后由 柒意 回复于 2021年05月03日 · 646 次阅读

apiAutoTestWeb 使用说明

apiAutoTestWeb是为 apiAutoTest 的可视化版本,其采用前后端分离 (FastAPI + Vue2) 方式实现

具体使用: Python3 + FastAPI + Vue + element-ui + vue element admin + Tortoise ORM + jwt(python-jose) + apscheduler + aiohttp + aiofiles + jsonpath

演示地址

==http://49.232.203.244:2152/==

点击即可访问: 前端入口, 接口文档

目的

尝试将学了一年 FastAPI 和 Vue 做个结合,动手做才能更快的获得知识,在做的时候基本是遇到什么问题就查,最终出来了这一版本.

相比 apiAutoTest

  1. header 支持使用自定义函数以及其他接口参数变量

弊端: 将无法再对单个用例不使用 header 或者单独使用 header,为此移除了 token 操作

  1. 增加了定时任务, 后台运行

  2. 支持graphql规范接口测试

  3. 将 excel 数据托管到可视化界面和数据库管理

弊端: 感觉更繁琐了,需要不停的在页面切换

  1. 暂不支持 SQL

tip: 不排除自定义函数中可以使用 sql

  1. 扩展函数

不支持,安装第三方库

  1. 前端表单填写采用文本域,没法校验是否有问题

  2. 上传文件接口暂不支持

功能介绍

1. 登录

  • 页面并没有写注册入口, 暂时只能通过接口来注册.
  • 默认的演示账号: tester 密码: 123456

2. 首页

3. 说明文档

4. 项目管理

5. 环境管理

  • 基准 header, 类似 JSON 的写法{"Authorization":"${token}"}欲使用 token,当 token 变量存在的时候会自动给其替换,其他接口 (在 token 提取接口之后的) 将被自动使用, 其具体效果见报告详细, 变量知识(见用例模块)
  • 当然也可以使用自定义函数来解决下面的问题

6. 接口管理

也实用一般的 http/https(带证书暂未测试,应该不支持) 接口

路径可以使用自定义函数参数变量

目前个人公司项目接触到,发现只能是 post 请求,json 数据格式传输

7. 用例管理

  • RESTful 规范

  • 参数类型: 根据接口文档选择
  • 请求参数: 类 json(只所以说是类json写法是因为后面有些地方使用非字符串的参数时会有是不合法json的情况) 写法, 可以使用自定义函数,参数变量
  • 预期结果: {"$.meta":{ "msg": "登录成功", "status": 200 }}$.meta 实际结果 (将会通过jsonpath对当前接口的响应提取内容$.meta为jsonpath表达式,意为从当前响应json中提取第一层级为key为meta的内容),{ "msg": "登录成功", "status": 200 }预期结果内容, 支持多个预期结果,添加多个键值对即可
  • 提取参数: {"token":"$.data.token"}, token为参数变量,$.data.token从当前接口响应提取 token 的值并赋值给自定义变量 token, 如果已经存在变量 token,那么这个 token 会覆盖之前的变量 token 内容,

  • GraphQL 规范: 除了 query 语句部分不同,其他一致

8. 任务管理

  • 立即执行: 必须等待执行完成之后,自动跳转报告信息,且无法在测试过程中去做其他操作
  • 后台执行:任务将在后台运行,需要执行去报告管理查看,然后可以去做其他操作
  • 定时信息:展示该任务的定时信息,会显示下次运行时间
  • 删除: 会删除任务以及定时任务

  • 选择用例:需先选择对应的环境,然后此处可以选择对应项目下的所有用例,已选中用例的展示顺序,将决定接口依次运行的顺序,会直接影响到每个接口变量参数的使用,你应该在使用变量参数前执行提取该变量参数的接口

  • 定时任务:目前定时任务是写在内存中的,每次应用重启,已有的定时任务都会失效

可通过,删除任务,编辑任务的定时任务开关来删除或者关闭定时任务

为避免服务器歇菜,还请谨慎使用定时任务, 及时关闭,并且服务器上设置了每天早 5 点 30 分会对项目进行重新部署,每次重新部署后所有定时任务都将失效 (任务储存在内存中)

  • 定时规则: 遵顼cron表达式示例给出的* * * * *意为每分钟执行一次任务

9. 报告管理

  • 点击测试结果可筛选结果
  • 点击首行的箭头展开查看详细

报告解读

  1. 请求信息: 显示当前用例的请求前 VS 请求后的 数据处理

  1. 提取参数: 显示当前用例的提取参数表达式

  1. 响应结果: 显示当前用例的响应结果

  1. 断言信息:显示当前用例的断言内容

$.meta ? {'msg': '登录成功', 'status': 200} 用例中书写的预期结果内容

{'msg': '登录成功', 'status': 200} == {'msg': '登录成功', 'status': 200} 处理后实际的预期结果内容

  1. 当前参数池:显示当前用例运行之后的可用参数变量

  1. 异常信息:显示当前用例运行出现的异常信息

关于异常的种类分析还需要统计后,也许后面会更新在文档上,目前如果出现异常请仔细查看请求信息,和异常信息等内容

7. 扩展脚本

gZWbC9.png

每次编辑之后,需要保存才会生效,此处的函数仅能作用于 接口path,用例请求参数、预期结果中,不支持调试

8. Json 校验

提供了实时的 json 格式校验

参考资料

还有源码中注释的链接资料

最后

  1. 感谢在此过程中我查过的所有资料的作者,提供答案的网友
  2. 该项目作为一个Demo,任有很多Bug和冗余代码可以优化
  3. 如果你有什么建议或者Bug反馈可以在源码仓库进行反馈
  4. 如果你也想加入这个项目可以直接申请成为仓库成员
  5. 如果你需要及时得到问题回复可以加入该 QQ 群851163511
  6. 如果你觉得这个项目有点用处,有帮助到你,还请点个star
  7. 视频过程
共收到 4 条回复 时间 点赞

只是个 Demo,欠缺很多 感谢交流指点,还请手下留情记得定时任务 体验之后关闭下,怕服务器歇菜~~~

老哥你比我牛逼太多了。 先关注。后面慢慢学

... 全靠百度/谷歌/github

新增 swagger openapi 接口导入通过传入 openapi.json 的 url 地址 将导入对应的接口文件,不会对接口路径做额外处理,并不会生成初始用例...

需要自行对 path 参数加上 ${参数名}来实现动态 path

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册