测试平台系列(50) 编写数据库连接配置功能(1)

简介: 编写数据库连接配置功能(1)

大家好~我是米洛


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


回顾


上一篇我们已经基本结束了对测试报告相关的处理工作,其实博主最近在考虑怎么去优化用例编写/运行相关的地方,因为发现之前写的过于辣鸡了,用例还是不能完全依附于项目,得有自己的生存之道呀!

于是我决定把项目和用例在页面上进行拆分,但是仍然保持树的形式。目前还没有想到很好的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就可以连接上咱们的数据库,能连上了,咱们还怕操作不了数据库吗?

1.jpg

最终代码如图,可以看到字段定义一目了然

编写DbConfigDao.py


首先编写查询功能,我们可以根据env环境,name别名,database数据库名3个维度来查询,至于后续需不需要host,待定,要加也很方便。

2.jpg

代码如图所示

注意,不论是我们从Flask切换到了FastApi,还是我们从同步切换到异步,确实都需要一个过程。但大家也不要惊慌,其实对我们来说,异步是一个提速的过程。

重点是掌握async/await的写法,去掉这2个关键字之后,有没有发现异步和同步代码基本一致?所以,我们要克服一下,未来异步必定是Python的趋势。

query是咱们的查询条件,当name存在,就以它为查询条件。简单解释下: if name

在Python里面,如果if后的对象不是bool对象的话,会自动进行转义,包括while也是。

比如大家熟悉的while 1:,之所以能一直循环下去,是因为1被转义为了True,效果等同于while True:,这样判断比较简洁,但存在一些陷阱

接着说这个功能,选择好对象的查询条件了之后,我们就调用session.execute方法,查找出数据,最后返回。

如果遇到异常,我们直接抛出,给router处理。

编写新增/删除/修改功能


3.jpg

新增/编辑

4.jpg

删除

其实要注意的点是,我们使用了async with session.begin(),并在代码块里面继续操作。

这里博主还没有完全去研究,只是知道需要这么使用,大胆揣测一下是因为with...begin方法结束后会自动提交数据库的变更,但不确定是不是这样,有兴趣的朋友可以去研究下。

编写Router


5.jpg

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

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

6.jpg

具体实现

测试一下


7.jpg

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

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

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

8.jpg

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


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




相关文章
|
9月前
|
关系型数据库 MySQL 测试技术
【分享】AgileTC测试用例管理平台使用分享
AgileTC 是一个脑图样式测试用例管理平台,支持用例设计、执行与团队协作,帮助测试人员高效管理测试流程。
457 116
【分享】AgileTC测试用例管理平台使用分享
|
8月前
|
SQL 关系型数据库 MySQL
阿里云RDS云数据库全解析:产品功能、收费标准与活动参考
与云服务器ECS一样,关系型数据库RDS也是很多用户上云必买的热门云产品之一,阿里云的云数据库RDS主要包含RDS MySQL、RDS SQL Server、RDS PostgreSQL、RDS MariaDB等几个关系型数据库,并且提供了容灾、备份、恢复、监控、迁移等方面的全套解决方案,帮助您解决数据库运维的烦恼。本文为大家介绍阿里云的云数据库 RDS主要产品及计费方式、收费标准以及活动等相关情况,以供参考。
|
9月前
|
人工智能 数据可视化 测试技术
AI测试平台自动遍历:低代码也能玩转全链路测试
AI测试平台的自动遍历功能,通过低代码配置实现Web和App的自动化测试。用户只需提供入口链接或安装包及简单配置,即可自动完成页面结构识别、操作验证,并生成可视化报告,大幅提升测试效率,特别适用于高频迭代项目。
|
9月前
|
JSON 测试技术 API
Apipost与Apifox测试功能对决,谁更适合开发者?
在API开发中,调试工具的选择至关重要。本文对比了国产工具Apipost与Apifox的功能差异,涵盖调试能力、环境管理、团队协作、文档生成、自动化测试等方面。Apifox在细节处理、协作支持及生态集成上表现更优,适合复杂项目与团队开发;而Apipost则适合基础调试需求。通过全面评估,开发者可依据项目特点选择合适工具,提升开发效率与质量。
Apipost与Apifox测试功能对决,谁更适合开发者?
|
9月前
|
人工智能 测试技术 调度
写用例写到怀疑人生?AI 智能测试平台帮你一键生成!
霍格沃兹测试开发学社推出AI智能测试用例生成功能,结合需求文档一键生成高质量测试用例,大幅提升效率,减少重复劳动。支持自定义提示词、多文档分析与批量管理,助力测试人员高效完成测试设计,释放更多时间投入核心分析工作。平台已开放内测,欢迎体验!
|
9月前
|
人工智能 测试技术 项目管理
测试不再碎片化:AI智能体平台「项目资料套件」功能上线!
在实际项目中,需求文档分散、整理费时、测试遗漏等问题常困扰测试工作。霍格沃兹推出AI智能体测试平台全新功能——项目资料套件,可将多个关联文档打包管理,并一键生成测试用例,提升测试完整性与效率。支持套件创建、文档关联、编辑删除及用例生成,适用于复杂项目、版本迭代等场景,助力实现智能化测试协作,让测试更高效、更专业。
|
9月前
|
存储 人工智能 测试技术
用AI提升测试效率:智能体平台的「需求文档管理」功能上线啦!
霍格沃兹测试开发学社推出AI智能体测试平台,全新「需求文档管理」功能助力高效测试准备。集中管理需求文档,支持多种上传方式,智能生成测试用例,提升测试效率与准确性,助力迈向智能化测试新时代。
|
9月前
|
人工智能 自然语言处理 前端开发
深度解析Playwright MCP:功能、优势与挑战,AI如何提升测试效率与覆盖率
Playwright MCP通过AI与浏览器交互,实现自然语言驱动的自动化测试。它降低门槛、提升效率,助力测试工程师聚焦高价值工作,是探索性测试与快速验证的新利器。
|
9月前
|
Java 测试技术 数据安全/隐私保护
通过yaml文件配置自动化测试程序
通过yaml文件可以将自动化测试环境,测试数据和测试行为分开,请看一下案例
354 4
|
9月前
|
测试技术
自动化测试登录后的功能
在自动化测试的时候,往往许多功能需要登录以后才可以进行操作的,在这里我介绍一种方法,在登录以后将Cookies信息存入本地文件,在测试登录以后操作的时候再从本地文件把信息调出来存入Cookies
164 4