测试平台系列(64) 用Sqlalchemy填下断言的坑.md

2022/6/13 测试平台接口测试FastApiPythonReact

大家好~我是米洛

这是一个完整的接口测试平台系列教程,希望能和大家一起学习,从0到1打造一个开源平台。

欢迎关注我的公众号米洛的测开日记,获取最新文章教程!

# 回顾

上一节我们讲了软删除,一个看似无关紧要却又很严肃的问题。如今我们来填一下之前的坑

# 之前埋的坑

之前我们在用例详情页面,只是让用户可以添加断言,但是没有支持编辑和删除的功能,甚至连展示的页面都冇,那今天我们就来好好填坑:

完成这块的编辑和删除功能。

# 老规矩

做完之前,看下当前的效果图:

提供了一个小小的页面

其实就是在断言 tab下面写了个curd的小页面

# 后端的改动

之所以把这一节单独拉出来讲,是因为以往我们都是新增/编辑数据以后,去请求一次list接口,等于是请求了2次。

这次我们换个方向,请求后直接拿到最新的那条数据,然后整合到现有的table之中。

其实之所以这么做,是因为我这个页面很大,里面有case的很多信息,涉及到多个表,局部数据的刷新我又不想单独包装一个接口。

让我们看看怎么做吧!

# 了解SqlAlchemy的机制

SqlAchemy是一款大家比较熟悉的orm库,在我的使用过程中发现一个特点:

比如我新建了一个model,使用session.add更新到db里面,如果是同步session则还需要commit操作。

但我们如今的需求是,insert到数据库之后拿到最新的数据。其实sqlalchemy会默认把之前插入过的数据销毁掉,也可能不是销毁,反正就是session结束了之后,数据将不复存在

所以我们百度查了一下,有这样一个方法,可以保留原先的数据:

session.expunge(data)
1

# 编写新增断言的接口

新增的接口和之前的区别就在这了

首先用session.flush()等待数据更新,refresh可以帮助我们拿到insert之后的id。

最后我们用expunge方法,保留这个对象,再返回即可。

# 编写编辑断言的接口

和新增类似

编辑和新增类似,但因为我们不需要获取主键id,因为咱们本来就有,所以只需要expunge即可。

# 编写删除断言的接口

删除也是一种update

因为软删除的缘故,我们实际上执行的也是update操作。

这样断言的编辑/删除就完成了

# 新增执行用例的功能

其实很简单,调用一下之前的接口即可。看看图吧~

# 执行下看看效果

至此,一个case的百分之80的执行流程就已经完毕了。接下来还是有很多事情需要做的:

  • 定时任务执行case
  • 用例变量/全局变量目前应该还没应用到断言之中
  • 断言还不支持JSON对比等等
  • 用例评分系统
  • 用户操作记录
  • 工作台未完成
  • 用户资料修改
  • 用户管理功能
  • 七牛云/阿里云oss接入
  • 其他前置条件类型
  • 后置条件

# ......

就以上已经有很多内容了,更别说未来的:

  • 数据工厂

  • 精准测试等等

    不过话说回来,这个平台希望的就是真正从0到1做成一个完全体的平台,慢慢填坑吧~