zoukankan      html  css  js  c++  java
  • 测试平台系列(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

    router层比较简单,基本就是调用dao层方法即可,只需要包装下try catch

    这边我封装了专门的Response,这样以后就不需要一直手写dict(code=0,msg="success")这样的返回了。

    具体实现

    测试一下

    查询/新增/编辑/删除都没问题

    后端这块内容并没有结束,目前我们只是能够把数据库配置管理起来,还达不到使用的效果。

    下一篇将介绍如何在线执行SQL并返回,并用于case数据构造器之中。篇幅可能会比较长,而我也需要做一部分前端的内容。

    对应的数据库配置页面会在这儿,只有super idol有权限


    今天的内容到这儿就结束啦,感谢大家的观看。如果大家感兴趣的话,可以和我一起敲起来。我也会尽快给一个可用的版本

    最后,感谢测试开发干货的支持,饭佬牛逼,热饭神教牛逼

  • 相关阅读:
    thinkPHP5.0 获取域名
    tp5 composer在packagist引入验证码
    使用build.php快速搭建前后台
    __construct()和__initialize()
    mysql 如何给SQL添加索引
    mysql如何查看SQL语句的执行时间
    thinkPHP自带的图片批量打包扩展ZipArchive
    sizeof和strlen
    Uboot中汇编指令
    Uboot代码分析
  • 原文地址:https://www.cnblogs.com/we8fans/p/15289786.html
Copyright © 2011-2022 走看看