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

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