mysql 造数据工具_dbfaker:基于业务的数据库造数据工具

dbfaker

介绍

基于数据库层面批量生成有逻辑关联的数据

软件架构

对于要造大量数据来讲,有几种方式,一是通过开发写的接口来模拟真实用户场景来产生数据,这种方式在某些方面来讲是比较合适的,比如因为是模拟用户场景,业务数据完整,不会丢.但不好的地方就是要处理的地方太多,接口定义,签名,加密等等,还有扩展性也很不好,一个业务场景要写一套代码.另一种方式,是已知业务产生的数据之间的依赖关系后,直接在数据库中插入相关数据,本项目就是通过这种方式来实现,好处就是生成规则通过配置文件来描述即可(yaml文件),不需要额外添加代码(对于某些字段生成规则有可能需要单独编写方法),与测试库testrunner比较类似.现在已知有些库也支持直接在数据库内造数据,但对库表之间的关联关系的处理都做得不太好.

另外对于测试人员进行自动化接口测试时,前置数据是个问题,是通过业务接口一条条跑完作为前置数据产生条件还是直接在数据库里面插入需要的数据呢?前面一种方式在业务场景复杂的时候用例的维护可能会变得极其麻烦。比如:

你要测试一个用户加入商品到购物车的一个接口;前置数据有哪些?

用户账号

商品

通过接口来造数据的流程如下:

通过用户端注册接口来创建账号

通过管理端接口登录,拿到token(预设管理端账号是已经存在了,如果不存在你还得注册管理端账号)

登陆后通过管理端接口创建商品信息

这三个步骤看起来简单,但实际上针对某些业务场景还有接口加密、签名、而且几乎每一条测试用例都需要用到N个前置条件,这些通过接口来调用的前置条件只要有一个失败就会影响你真正要测试的接口。做过接口测试的同学应该深有体会;

实际上实现上述接口测试,真正要测的只是商品是否能正常加入到购物车;真正依赖的就只有两个数据,用户账号和商品信息。我们只需要在用户表和商品表里面各插入一条数据就可以了。通过本工具,只需要描述两个表的每个字段的生成规则就可以直接在数据库中插入两条“十分真实”的数据。用这种方式来解决测试用例前置条件的问题不说是最好的方式,但肯定是比上面的前置用例的方式好很多。

本项目数据处理流程如下:

c66befe2c472

处理流程

安装

git clone https://gitee.com/guojongg/dbfaker.git

cd dbfaker

# 可先创建虚拟环境后再安装

python3 setup.py install

# 使用pip直接安装

pip3 install dbfaker

# 卸载

pip uninstall dbfaker

使用说明

1. 生成meta.yml文件,可通过内置工具table2yml.py来一键生成模板,生成后需完善模板中表字段的定义

table2yml.py文件使用说明:

usage: table2yml [-h] [--connect [CONNECT]] [--table_names [TABLE_NAMES]]

[--sql_file [SQL_FILE]

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值