Для начала давайте разберемся, что такое тестирование баз данных.
Тестирование базы данных заключается в проверке схемы, таблиц, триггеров и т. д. тестируемой базы данных. Это может включать создание сложных запросов для загрузки/стресс-тестирования базы данных и проверки ее отзывчивости. Он проверяет целостность и согласованность данных.
Мы дорабатываем то, что нам необходимо проверить структуру таблицы, поля, длину, первичный ключ, индекс, уникальные и другие атрибуты.
Как это сделать?
Возможно, вы можете проверить это напрямую через командную строку, вот так
Или, может быть, вы проверяете это с помощью такого инструмента
Неважно какой, вроде бы цель достигнута. Что ж, попробуем проверить это, написав код на Python.
В конце концов, писать код кажется интереснее! ! !
Сначала разберемся с технической подготовкой. Для этого необходимы следующие вещи:
1. Питон, я использую Python3
2. библиотека sqlalchemy (что это? Вам следует знать)
3. библиотека pymysql (в этой статье в качестве примера используется mysql, поэтому выберите библиотеку драйверов mysql)
4 unittest
IDE, я использую последнюю версию PyCharm Community~~
Возьмите в качестве примера проверку пользовательской таблицы в базе данных MySQL по умолчанию и перейдите непосредственно к примеру кода.
Следующий пример кода проверяет лишь некоторые из следующих целей:
- имя таблицы
- имя поля
- Первичный ключ
Что касается других проверок, вы можете исследовать их самостоятельно или присоединиться к группе WeChat для обсуждения.
# -*- 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:12345678@127.0.0.1:3306/mysql")
# Создать объект инспектора
self.insp = reflection.Inspector.from_engine(self.engine)
def test_table_name(self):
# Определите, находится ли пользовательская таблица в библиотеке экземпляров MySQL.
self.assertIn("user", self.insp.get_table_names())
def test_column(self):
# Есть ли поле «Пользователь» в таблице пользователей?
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):
# Проверьте, является ли поле «Пользователь» в таблице пользователей первичным. ключ
k = self.insp.get_pk_constraint("user")
self.assertIn("User", k["constrained_columns"])
if __name__ == "__main__":
unittest.main()
Сохраните приведенный выше код в db_test.py и запустите его, чтобы увидеть результаты следующим образом.