接口自动化数据库校验解决方案——SqlAlchemy

本文介绍了如何使用SqlAlchemy进行接口自动化测试中的数据库校验,避免因数据库表结构变化带来的sql维护难题。SqlAlchemy是Flask的数据库解决方案,允许实时跟进表结构变动,支持CRUD操作。文章探讨了依赖引入、ORM文件映射更新、简单及复杂使用场景,并提醒了在处理特定表名时的注意事项。
摘要由CSDN通过智能技术生成
  • 接口自动化中需要对数据库层面数据进行校验,但是如果需要频繁编写sql,且当研发迭代对数据库表结构进行了更改,sql维护起来,不够优雅,且当自动化用例量级上来之后,会陷入维护地狱
  • 那么有没有一种可以实时跟进研发更新数据库表变动,并且支持crud,且不会有过大的维护成本的技术呢?有,就是今天的主角。

SqlAlchemy简介

  • 是flask框架的数据库解决方案,基于对样映射关系来去处理表数据查询,有点类似springboot早期流行的JPA。下面列出一些比较好的知识简介。

SQLAlchemy入门和进阶 - 知乎 (zhihu.com)
由于在公司 接口自动化框架中已经实现并构筑基本使用工具类,本篇不再对如何引入sqlAlchemy,仅着眼于如何让sqlAlchemy为接口自动化测试服务,以及日常工作中使用。

依赖引入

flask-sqlacodegen==1.1.8  # flask 生成orm类文件的依赖库
PyMySQL==1.0.3   # 类似mysql connector的链接驱动
SQLAlchemy==1.4.0  # sqlalchemy主要代码逻辑包

表结构变动后ORM文件映射更新

swap
flask-sqlacodegen --outfile ./mod_swap.py "mysql+pymysql://wwyh_jshd_mysql:i2#0Ci2LKwior@xx.x.xx.x:3306/swap"


yygl
flask-sqlacodegen --outfile ./mod_yygl.py "mysql+pymysql://yygl_test:NbAGuKi^ZnUgfGh2@xx.xx.xxx:3306/yygl_test"


  • 我们公司的业务使用了两个DB 所以,需要针对两个数据库进行ORM映射。上述代码,直接进行执行即可,生成文件如下


  • 可以看到生成的两个文件,其实涵盖了我们当前所使用的库表的所有实体类关联。

举例说明

class EChargeItem(Base):
    __tablename__ = 'e_charge_item'

    ITEM_ID = Column(String(100, 'utf8mb4_bin'), primary_key=True, info='费用项标识')
    ITEM_CODE = Column(String(8, 'utf8mb4_bin'), info='费用项编码,取标准代码')
    ITEM_NAME = Column(String(256, 'utf8mb4_bin'), info='费用项名称')
    NEED_FLAG = Column(String(8, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值