Практическое руководство по реализации тестирования базы данных на основе python3+unittest+sqlalchemy
Практическое руководство по реализации тестирования базы данных на основе python3+unittest+sqlalchemy

Для начала давайте разберемся, что такое тестирование баз данных.

Тестирование базы данных заключается в проверке схемы, таблиц, триггеров и т. д. тестируемой базы данных. Это может включать создание сложных запросов для загрузки/стресс-тестирования базы данных и проверки ее отзывчивости. Он проверяет целостность и согласованность данных.

Мы дорабатываем то, что нам необходимо проверить структуру таблицы, поля, длину, первичный ключ, индекс, уникальные и другие атрибуты.

Как это сделать?

Возможно, вы можете проверить это напрямую через командную строку, вот так

Или, может быть, вы проверяете это с помощью такого инструмента

Неважно какой, вроде бы цель достигнута. Что ж, попробуем проверить это, написав код на Python.

В конце концов, писать код кажется интереснее! ! !

Сначала разберемся с технической подготовкой. Для этого необходимы следующие вещи:

1. Питон, я использую Python3

2. библиотека sqlalchemy (что это? Вам следует знать)

3. библиотека pymysql (в этой статье в качестве примера используется mysql, поэтому выберите библиотеку драйверов mysql)

4 unittest

IDE, я использую последнюю версию PyCharm Community~~

Возьмите в качестве примера проверку пользовательской таблицы в базе данных MySQL по умолчанию и перейдите непосредственно к примеру кода.

Следующий пример кода проверяет лишь некоторые из следующих целей:

- имя таблицы

- имя поля

- Первичный ключ

Что касается других проверок, вы можете исследовать их самостоятельно или присоединиться к группе WeChat для обсуждения.

Язык кода:javascript
копировать
# -*- 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 и запустите его, чтобы увидеть результаты следующим образом.

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода