前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于python3+unittest+sqlalchemy实现数据库测试实践指南

基于python3+unittest+sqlalchemy实现数据库测试实践指南

作者头像
苦叶子
发布2024-06-14 14:24:02
830
发布2024-06-14 14:24:02
举报
文章被收录于专栏:开源优测开源优测

首先我们看一下什么是数据库测试

数据库测试是检查被测数据库的模式、表、触发器等。 它可能涉及创建复杂的查询来加载/压力测试数据库并检查其响应性。 它检查数据的完整性和一致性。

我们在细化成具体的就是,我们需要验证表结构、字段、长度、主键、索引、unique等等属性。

如何做呢?

可能你是直接通过命令行这样验证

也可能你是通过工具这样验证

不管哪种,似乎达到目的就行,那好,我们通过Python写代码验证试试。

毕竟写代码显得比较有意思点!!!

先看下技术准备,需要以下东西

1. Python,笔者用Python3

2. sqlalchemy库(这是什么?你应该要知道的喲)

3. pymysql库(本文以mysql为例,所以选择该mysql驱动库)

4 unittest

IDE,笔者用PyCharm Community版本,最新的嗷嗷嗷~~

以验证mysql默认的mysql数据库中的user表为例,直接上代码实例了

以下代码示例仅验证以下几个目标:

- 表名

- 字段名

- 主键

其他的验证自行研究学习,或是加微信群里讨论即可。

代码语言:javascript
复制
# -*- coding: utf-8 -*-
__author__ = "苦叶子"
import unittest

from sqlalchemy import create_engine
from sqlalchemy.engine import reflection


class TestMySQL(unittest.TestCase):
    def setUp(self):
        # 创建连接
        self.engine = create_engine("mysql+pymysql://root:12345678@127.0.0.1:3306/mysql")

        # 创建inspector对象
        self.insp = reflection.Inspector.from_engine(self.engine)

    def test_table_name(self):
        # 判断user表是否在mysql这个实例库中
        self.assertIn("user", self.insp.get_table_names())

    def test_column(self):
        # user表中是否有User字段
        User = None
        columns = self.insp.get_columns("user")
        for col in columns:
            if "User" == col["name"]:
                User = col["name"]

        self.assertIsNotNone(User)

    def test_keyprimary(self):
        # 验证user表中User字段是否为主键
        k = self.insp.get_pk_constraint("user")
        self.assertIn("User", k["constrained_columns"])


if __name__ == "__main__":

    unittest.main()

保存上述代码在db_test.py中,运行下看结果如下

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源优测 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档