Python數(shù)據(jù)庫測(cè)試實(shí)戰(zhàn)指南
下方查看歷史精選文章
大數(shù)據(jù)測(cè)試過程、策略及挑戰(zhàn)
首先我們看一下什么是數(shù)據(jù)庫測(cè)試
數(shù)據(jù)庫測(cè)試是檢查被測(cè)數(shù)據(jù)庫的模式、表、觸發(fā)器等。
它可能涉及創(chuàng)建復(fù)雜的查詢來加載/壓力測(cè)試數(shù)據(jù)庫并檢查其響應(yīng)性。
它檢查數(shù)據(jù)的完整性和一致性。
我們?cè)诩?xì)化成具體的就是,我們需要驗(yàn)證表結(jié)構(gòu)、字段、長(zhǎng)度、主鍵、索引、unique等等屬性。
如何做呢?
可能你是直接通過命令行這樣驗(yàn)證

也可能你是通過工具這樣驗(yàn)證

不管哪種,似乎達(dá)到目的就行,那好,我們通過Python寫代碼驗(yàn)證試試。
畢竟寫代碼顯得比較有意思點(diǎn)!??!
先看下技術(shù)準(zhǔn)備,需要以下東西
1. Python,筆者用Python3
2. sqlalchemy庫(這是什么?你應(yīng)該要知道的喲)
3. pymysql庫(本文以mysql為例,所以選擇該mysql驅(qū)動(dòng)庫)
4 unittest
IDE,筆者用PyCharm Community版本,最新的嗷嗷嗷~~
以驗(yàn)證mysql默認(rèn)的mysql數(shù)據(jù)庫中的user表為例,直接上代碼實(shí)例了
以下代碼示例僅驗(yàn)證以下幾個(gè)目標(biāo):
- 表名
- 字段名
- 主鍵
其他的驗(yàn)證自行研究學(xué)習(xí),或是加微信群里討論即可。
# -*- coding: utf-8 -*-
__author__ = "苦葉子"
import unittest
from sqlalchemy import create_engine
from sqlalchemy.engine import reflection
class TestMySQL(unittest.TestCase):
def setUp(self):
# 創(chuàng)建連接
self.engine = create_engine("mysql+pymysql://root:[email protected]:3306/mysql")
# 創(chuàng)建inspector對(duì)象
self.insp = reflection.Inspector.from_engine(self.engine)
def test_table_name(self):
# 判斷user表是否在mysql這個(gè)實(shí)例庫中
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):
# 驗(yàn)證user表中User字段是否為主鍵
k = self.insp.get_pk_constraint("user")
self.assertIn("User", k["constrained_columns"])
if __name__ == "__main__":
unittest.main()
保存上述代碼在db_test.py中,運(yùn)行下看結(jié)果如下

評(píng)論
圖片
表情


