Python數據庫測試實戰指南

首先我們看一下什麼是數據庫測試

數據庫測試是檢查被測數據庫的模式、表、觸發器等。

 

它可能涉及創建複雜的查詢來加載/壓力測試數據庫並檢查其響應性。

 

它檢查數據的完整性和一致性。

 

我們在細化成具體的就是,我們需要驗證表結構、字段、長度、主鍵、索引、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中,運行下看結果如下

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章