Python数据库测试实战指南

  • 2019 年 12 月 19 日
  • 笔记

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

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

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

如何做呢?

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

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

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

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

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

1. Python,笔者用Python3

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

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

4 unittest

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

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

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

– 表名

– 字段名

– 主键

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

# -*- 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:[email protected]: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中,运行下看结果如下

本文完!!!更多精彩敬请期待下文分解……