测试平台系列(51) 编写数据库连接相关方法

简介: 编写数据库连接相关方法

大家好~我是米洛



我在从0到1打造一个开源平台, 也在编写一套完整的接口测试平台系列教程,希望大家能够多多支持。


回顾


上一节我们边写了数据库配置的功能接口,但是前端页面还没有做展示。

如果完成了前端页面增删改查页面,我想我们还需要几个功能:

  • 在线测试连接
    因为有的时候数据库配置会发生变化,如果我们不支持在线测试功能的话,可能大家还需要手动去连接一下,非常难用
  • 在线执行SQL
    这个是为了能够给用户在线运行sql语句,类似于小ide的功能,当然我们只做最核心的部分。
    那么今天我们就来完善前端页面并完成在线连接测试功能

前端部分


前端部分还是以往的dispatch模式,service.js用于发送http请求,model用于管理变量,组件通过dispatch去调用具体的方法。

10.jpg

image

前端页面还是分3个部分,可以理解为3个div:

  • 搜索栏
  • 添加栏
  • 表格栏

11.jpg

这是需要填写的表单

大概的页面展示是这样,我们今天重点讲一下数据库连接这块。

思考怎么做


连接部分我们仍然打算采用sqlalchemy,既然已经开始用了,而且他也支持异步session,在没遇到大坑的时候我们就不考虑更换了。

首先我们考虑以下几个点:

连接复用


首先要清楚,我们之所以做数据库连接配置,是因为我们在构造数据的时候会用到,那么我们势必要维护一个数据库连接的map,充当缓存的作用。

当我们的账号密码等连接信息没有变化的时候,我们是不是可以把次连接用的session拿出来继续使用?答案是肯定的!

而且当我们测试连接以后,这个数据库配置就被缓存了起来,如果我们要使用,直接从连接缓存里面拿就可以了。配合sqlalchemy本身自带的连接池,基本上我们要做的就比较简单,只是包一层dict即可。

缓存扩张问题


举个例子,我现在配置了A数据库连接,测试了一遍,你给我缓存起来了,接着我把A改成B,由于A和B的配置不一样,所以缓存里面现在需要插入一条B数据,如果改的频繁,就会使得这个dict无限扩张,内存也会占用变大。但因为数据库配置不太可能经常变化,我们也可以在update配置的时候清楚之前的缓存。

多线程访问缓存的问题


Python的多线程我不是太熟悉,不太确定Fastapi内部是否会有多个线程同时读写缓存的情况,如果有,那肯定会出问题的,我们需要加🔒,暂时我们可以先观望一下

动起手来

我们对之前的models/init.py方法进行一些改造,我们需要增加一个DatabaseHelper类。

12.jpg

为什么要传入这么多参数,是因为传入配置id的话,需要再次查询数据库,比较麻烦

  • init方法
    init方法创建了我们内部的dict缓存,key是数据库的连接信息,value是对应的session。
  • get_connection
    通过数据库配置去获取到对应的连接信息,首先拼接key,拿到唯一的key标识,接着去缓存找有没有初始化这个连接,有的话直接返回,没有就开始建立连接。
  • get_jdbc_url

13.jpg

这里其实是把数据库配置转为了数据库连接url

注意: pg我还没有找到合适的异步库,所以暂时先不支持它,后面再支持,总感觉pg用的人并没有那么多

  • 删除缓存的方法

14.jpg

先判断是否有该key,有则删除

  • 测试连接的方法

15.jpg

image

接受一个session,如果为空,则返回错误信息。最后execute一句select 1测试是否能够正常连上数据库,不能则返回错误信息。

16.jpg

最后我们再实例化这个Helper,统一调用这个对象即可


  • 改写update方法

17.jpg

加入删除缓存的部分


  • 编写在线测试方法

18.jpg

如果session没获取到,返回错误信息

测试一哈


19.jpg

密码不正确的时候

20.jpg

这是密码正确的情况下


今天的内容到这里就结束了,下一节我们编写在线执行SQL功能。


相关文章
|
28天前
|
关系型数据库 MySQL 测试技术
【分享】AgileTC测试用例管理平台使用分享
AgileTC 是一个脑图样式测试用例管理平台,支持用例设计、执行与团队协作,帮助测试人员高效管理测试流程。
172 116
【分享】AgileTC测试用例管理平台使用分享
|
14天前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
118 1
|
26天前
|
人工智能 数据可视化 测试技术
AI测试平台自动遍历:低代码也能玩转全链路测试
AI测试平台的自动遍历功能,通过低代码配置实现Web和App的自动化测试。用户只需提供入口链接或安装包及简单配置,即可自动完成页面结构识别、操作验证,并生成可视化报告,大幅提升测试效率,特别适用于高频迭代项目。
|
1月前
|
人工智能 测试技术 调度
写用例写到怀疑人生?AI 智能测试平台帮你一键生成!
霍格沃兹测试开发学社推出AI智能测试用例生成功能,结合需求文档一键生成高质量测试用例,大幅提升效率,减少重复劳动。支持自定义提示词、多文档分析与批量管理,助力测试人员高效完成测试设计,释放更多时间投入核心分析工作。平台已开放内测,欢迎体验!
|
1月前
|
人工智能 测试技术 项目管理
测试不再碎片化:AI智能体平台「项目资料套件」功能上线!
在实际项目中,需求文档分散、整理费时、测试遗漏等问题常困扰测试工作。霍格沃兹推出AI智能体测试平台全新功能——项目资料套件,可将多个关联文档打包管理,并一键生成测试用例,提升测试完整性与效率。支持套件创建、文档关联、编辑删除及用例生成,适用于复杂项目、版本迭代等场景,助力实现智能化测试协作,让测试更高效、更专业。
|
14天前
|
机器学习/深度学习 人工智能 自然语言处理
如何让AI更“聪明”?VLM模型的优化策略与测试方法全解析​
本文系统解析视觉语言模型(VLM)的核心机制、推理优化、评测方法与挑战。涵盖多模态对齐、KV Cache优化、性能测试及主流基准,助你全面掌握VLM技术前沿。建议点赞收藏,深入学习。
204 8
|
2月前
|
存储 关系型数据库 MySQL
MySQL数据库中进行日期比较的多种方法介绍。
以上方法提供了灵活多样地处理和对比MySQL数据库中存储地不同格式地日子信息方式。根据实际需求选择适当方式能够有效执行所需操作并保证性能优化。
235 10
|
28天前
|
人工智能 自然语言处理 测试技术
AI测试平台的用例管理实践:写得清晰,管得高效,执行更智能
在测试过程中,用例分散、步骤模糊、回归测试效率低等问题常困扰团队。霍格沃兹测试开发学社推出的AI测试平台,打通“用例编写—集中管理—智能执行”全流程,提升测试效率与覆盖率。平台支持标准化用例编写、统一管理操作及智能执行,助力测试团队高效协作,释放更多精力优化测试策略。目前平台已开放内测,欢迎试用体验!
|
2月前
|
存储 人工智能 文字识别
从零开始打造AI测试平台:文档解析与知识库构建详解
AI时代构建高效测试平台面临新挑战。本文聚焦AI问答系统知识库建设,重点解析文档解析关键环节,为测试工程师提供实用技术指导和测试方法论
|
4月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
750 23

热门文章

最新文章