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中,運行下看結果如下

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