Тестирование программного обеспечения | Подробное введение и базовое введение в Pydantic
Тестирование программного обеспечения | Подробное введение и базовое введение в Pydantic

Введение

Pydantic — это мощная библиотека Python для проверки и анализа данных, особенно для работы с данными JSON. Его основная цель — сделать проверку и анализ данных простыми, интуитивно понятными и удобными в обслуживании. Эта статья познакомит вас с основами Pydantic, в том числе с тем, как определять модели, проверять данные и обрабатывать ошибки.

Что такое Пидантик?

Pydantic — это библиотека для проверки и анализа данных, которая позволяет нам определять модели данных и проверять входные данные на соответствие этим моделям. Одной из его важных особенностей является то, что он автоматически преобразует входные данные в строго типизированные объекты Python и предоставляет четкие сообщения об ошибках, чтобы мы могли легко обрабатывать ошибки проверки.

Установить Пидантик

PydanticдаPythonсторонняя библиотека,Мы можем напрямую использовать команду pip для установки.,Команда выглядит следующим образом:

Язык кода:javascript
копировать
pip install pydantic

Определите модель Пидантика

Чтобы использовать В Pydantic сначала необходимо определить класс модели. Модельный класс обычный Python класс, который наследуется от pydantic.BaseModel,И определение полей данных и их типов. Вот простой пример:

Язык кода:javascript
копировать
from pydantic import BaseModel

class Person(BaseModel):
    name: str
    age: int
	hooby: list

В этом примере мы определяем Person из Модель,у него три поля:name и ageа такжеhobby,иметь строки соответственно、целое числоа такжетип списка。Pydantic Эти определения полей будут использоваться для проверки входных данных.

Использование моделей Pydantic

После определения модели Pydantic мы можем использовать ее для проверки и анализа данных. Вот несколько распространенных примеров использования:

  1. Создать экземпляр модели

Мы можем создавать экземпляры модели, передавая данные словаря, например:

Язык кода:javascript
копировать
data = {"name": "Alice", "age": 30, "hobby": ['football']}
person = Person(**data)
print(person)

----------
#######
Вывод следующий:
name='Alice' age=30 hobby=['football']
  1. данныепроверять

Pydantic Он автоматически проверяет, соответствуют ли входные данные определению модели. Если входные данные не соответствуют определению, будут подняты pydantic.ValidationError аномальный. Например:

Язык кода:javascript
копировать
data = {"name": "Bob", "age": "thirty", "hobby": "basketball"}
person = Person(**data)  # Здесь будет вызвано исключение ValidationError.

----------
При запуске скрипта появляется следующее сообщение об ошибке:
 person = Person(**data)  # Здесь будет вызвано исключение ValidationError.
  File "pydantic\main.py", line 331, in pydantic.main.BaseModel.__init__
pydantic.error_wrappers.ValidationError: 2 validation errors for Person
age
  value is not a valid integer (type=type_error.integer)
hobby
  value is not a valid list (type=type_error.list)
  1. Получить значение поля

Мы можем получить доступ к значению поля модели так же, как к обычному свойству класса:

Язык кода:javascript
копировать
data = {"name": "Muller", "age": 30, "hobby": ['football', 'reading', 'running']}
person = Person(**data)

print(person.name)
print(person.age)
print(person.hobby)
  1. Преобразовать в словарь

Мы можем преобразовать экземпляр модели в словарь, чтобы его можно было сериализовать в данные JSON:

Язык кода:javascript
копировать
data = {"name": "Muller", "age": 30, "hobby": ['football', 'reading', 'running']}
person = Person(**data)

person_dict = person.dict()
print(person_dict)
  1. Обработка ошибок проверки

Если проверка не удалась, Pydantic Предоставляется подробная информация об ошибке, чтобы мы могли ее обработать. Мы можем захватить pydantic.ValidationError Исключение для доступа к информации об ошибке. Вот пример:

Язык кода:javascript
копировать
from pydantic import BaseModel
from pydantic import ValidationError

class Person(BaseModel):
    name: str
    age: int
    hobby: list


try:
    data = {"name": "Muller", "age": "thirty", "hobby": ['football', 'reading', 'running']}
    person = Person(**data)
except ValidationError as e:
    print(e)

-------------
Запустите скрипт, и результаты будут следующими:
1 validation error for Person
age
  value is not a valid integer (type=type_error.integer)

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

  1. Пользовательские правила проверки

В дополнение к базовой проверке типов мы также можем настраивать правила проверки. Например, если мы хотим убедиться, что возраст находится в определенном диапазоне, мы можем использовать @validator Декоратор определяет пользовательскую функцию проверки:

Язык кода:javascript
копировать
from pydantic import validator

class Person(BaseModel):
    name: str
    age: int
    hobby:list

    @validator("age")
    def age_must_be_positive(cls, age):
        if age < 0:
            raise ValueError("Age must be a positive integer")
        return age

В этом примере мы определяем age_must_be_positive Метод, который проверит, что возраст является положительным целым числом.

Подвести итог

Pydantic является мощным Python Библиотека для проверки и парсинга данных. Это позволяет легко определять данные Модели, проверять данные, обрабатывать ошибки и Пользовательские правила проверки. Будь то строительство Web Приложение, API, инструмент командной строки или что-то еще Python приложение,Pydantic Все это может помочь нам легче обрабатывать данные. Я надеюсь, что эта статья поможет вам начать работу Pydantic Помогает!

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 и детали кода