测试平台系列(64) 用Sqlalchemy填下断言的坑
大家好~我是
米洛
!
这是一个完整的接口测试平台系列教程
,希望能和大家一起学习,从0到1打造一个开源平台。
欢迎关注我的公众号测试开发坑货
,获取最新文章教程!
回顾
上一节我们讲了软删除
,一个看似无关紧要却又很严肃的问题。如今我们来填一下之前的坑
。
之前埋的坑
之前我们在用例详情页面,只是让用户可以添加断言
,但是没有支持编辑和删除的功能,甚至连展示的页面都冇
,那今天我们就来好好填坑
:
完成这块的编辑和删除功能。
老规矩
做完之前,看下当前的效果图:
其实就是在断言
tab下面写了个curd的小页面
。
后端的改动
之所以把这一节单独拉出来讲,是因为以往我们都是新增/编辑数据
以后,去请求一次list接口,等于是请求了2次。
这次我们换个方向,请求后直接拿到最新的那条数据,然后整合到现有的table之中。
其实之所以这么做,是因为我这个页面很大,里面有case的很多信息,涉及到多个表,局部数据
的刷新我又不想单独包装一个接口。
让我们看看怎么做吧!
了解SqlAlchemy的机制
SqlAchemy是一款大家比较熟悉的orm
库,在我的使用过程中发现一个特点:
比如我新建了一个model
,使用session.add更新到db里面,如果是同步session则还需要commit操作。
但我们如今的需求是,insert到数据库之后拿到最新的数据。其实sqlalchemy会默认把之前插入过的数据销毁掉,也可能不是销毁,反正就是session结束了之后,数据将不复存在
。
所以我们百度查了一下,有这样一个方法,可以保留原先的数据:
session.expunge(data)
编写新增断言的接口
首先用session.flush()等待数据更新,refresh可以帮助我们拿到insert之后的id。
最后我们用expunge方法,保留这个对象,再返回即可。
编写编辑断言的接口
编辑和新增类似,但因为我们不需要获取主键id
,因为咱们本来就有,所以只需要expunge即可。
编写删除断言的接口
因为软删除的缘故,我们实际上执行的也是update
操作。
新增执行用例的功能
其实很简单,调用一下之前的接口
即可。看看图吧~
至此,一个case的百分之80的执行流程就已经完毕了。接下来还是有很多事情
需要做的:
- 定时任务执行case
- 用例变量/全局变量目前应该还没应用到断言之中
- 断言还不支持JSON对比等等
- 用例评分系统
- 用户操作记录
- 工作台未完成
- 用户资料修改
- 用户管理功能
- 七牛云/阿里云oss接入
- 其他前置条件类型
- 后置条件
......
就以上已经有很多内容了,更别说未来的:
-
数据工厂
-
精准测试等等
不过话说回来,这个平台希望的就是
真正从0到1做成一个完全体的平台
,慢慢填坑吧~