测试平台系列(50) 编写数据库连接配置功能
大家好,我是米洛,求三连!求关注
测试开发坑货
!
回顾
上一篇我们已经基本结束
了对测试报告相关的处理工作,其实博主最近在考虑怎么去优化用例编写/运行相关的地方,因为发现之前写的过于辣鸡了,用例还是不能完全依附
于项目,得有自己的生存之道呀!
于是我决定把项目
和用例在页面上进行拆分,但是仍然保持树的形式。目前还没有想到很好的UI展示效果,想到的话也得周末花时间去做了,所以我们先做数据库相关的数据构造器
工作。
为什么要做这块?
我们知道,在接口测试中,经常要拿数据库的数据进行断言操作
或者查询数据
,可能有一些同学不会去db里面进行校验,这个争议咱们先不管,但我是支持去db里面校验数据的。
那么操作db,就得有db的一些连接信息。因为本人从未用过Oracle,所以很礼貌地拒绝支持Oracle
。
选定好常见的关系型数据库: Mysql+Postgresql即可。我们不但有sql,还会支持Redis
。
本节内容
- 设计好数据表存放的核心信息
- 完成数据库配置的
增删改查
功能
设计数据库配置表
首先给它取个名字: pity_database_info
,一目了然可以知道它是数据库配置相关的表。
-
id
-
env
-
sql_type
(数据库类型, 0: mysql 1:postgres) -
name
(数据库配置的名称,比如: 订单表) -
host
-
port
-
username
-
password
-
database
-
create_user
-
update_user
-
created_at
-
updated_at
-
deleted_at
基本上我们通过host:port/database@username:password就可以连接上咱们的数据库,能连上了,咱们还怕操作不了数据库吗?
编写DbConfigDao.py
首先编写查询功能
,我们可以根据env环境
,name别名
,database数据库名
3个维度来查询,至于后续需不需要host,待定,要加也很方便。
注意,不论是我们从Flask
切换到了FastApi
,还是我们从同步切换到异步
,确实都需要一个过程。但大家也不要惊慌,其实对我们来说,异步是一个提速
的过程。
重点是掌握async/await的写法,去掉这2个关键字之后,有没有发现异步和同步代码基本一致?所以,我们要克服一下,未来异步必定是Python
的趋势。
query是咱们的查询条件,当name存在,就以它为查询条件。简单解释下: if name
在Python里面,如果if后的对象不是bool对象的话,会自动进行转义
,包括while也是。
比如大家熟悉的while 1:
,之所以能一直循环下去,是因为1被转义为了True,效果等同于while True:
,这样判断比较简洁
,但存在一些陷阱
。
接着说这个功能,选择好对象的查询条件了之后,我们就调用session.execute方法,查找出数据,最后返回。
如果遇到异常
,我们直接抛出,给router处理。
编写新增/删除/修改功能
其实要注意的点是,我们使用了async with session.begin()
,并在代码块里面继续操作。
这里博主
还没有完全去研究,只是知道需要这么使用,大胆揣测一下是因为with...begin方法结束后会自动提交
数据库的变更,但不确定是不是这样,有兴趣的朋友可以去研究下。
编写Router
这边我封装了专门的Response,这样以后就不需要一直手写dict(code=0,msg="success")
这样的返回了。
测试一下
后端这块内容并没有结束,目前我们只是能够把数据库配置管理起来,还达不到使用的效果。
下一篇
将介绍如何在线执行SQL并返回
,并用于case数据构造器之中。篇幅可能会比较长,而我也需要做一部分前端
的内容。
今天的内容到这儿就结束啦,感谢大家的观看
。如果大家感兴趣的话,可以和我一起敲起来。我也会尽快给一个可用的版本
。
最后,感谢测试开发干货
的支持,饭佬牛逼,热饭神教牛逼
!