Pruebas de software | Introducción detallada e introducción básica a Pydantic

Insertar descripción de la imagen aquí

Introducción

Pydantic es una poderosa biblioteca de Python para validación y análisis de datos, específicamente para trabajar con datos JSON. Su objetivo principal es hacer que la validación y el análisis de datos sean simples, intuitivos y fáciles de mantener. Este artículo presentará los conceptos básicos de Pydantic, incluido cómo definir modelos, validar datos y manejar errores.

¿Qué es Pydantic?

Pydantic es una biblioteca para la validación y el análisis de datos que nos permite definir modelos de datos y validar los datos de entrada con respecto a esos modelos. Una de sus características importantes es que convierte automáticamente los datos de entrada en objetos Python fuertemente tipados y proporciona mensajes de error claros para que podamos manejar fácilmente las fallas de validación.

Instalar Pydantic

PydanticEs una biblioteca de terceros de Python, podemos instalarla directamente usando el comando pip, el comando es el siguiente:

pip install pydantic

Definir el modelo Pydantic

Para usar Pydantic, primero necesita definir una clase de modelo. Una clase modelo es una clase ordinaria de Python que hereda pydantic.BaseModely define los campos de datos y sus tipos. He aquí un ejemplo sencillo:

from pydantic import BaseModel

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

En este ejemplo, definimos un Personmodelo nombrado con tres campos: namey agey hobby, con tipos de cadena, entero y lista respectivamente. Pydantic utilizará estas definiciones de campo para validar los datos de entrada.

Usando modelos Pydantic

Una vez definido el modelo Pydantic, podemos usarlo para validar y analizar datos. A continuación se muestran algunos ejemplos de uso comunes:

  1. Crear instancia de modelo

Podemos crear instancias de modelo pasando datos de diccionario, por ejemplo:

data = {
    
    "name": "Alice", "age": 30, "hobby": ['football']}
person = Person(**data)
print(person)

----------
#######
输出结果如下:
name='Alice' age=30 hobby=['football']
  1. verificación de datos

Pydantic verifica automáticamente que los datos de entrada se ajusten a la definición del modelo. Si los datos de entrada no cumplen con la definición, pydantic.ValidationErrorse generará una excepción. Por ejemplo:

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. Obtener valor de campo

Podemos acceder al valor de un campo modelo como una propiedad de clase normal:

data = {
    
    "name": "Muller", "age": 30, "hobby": ['football', 'reading', 'running']}
person = Person(**data)

print(person.name)
print(person.age)
print(person.hobby)
  1. Convertir a diccionario

Podemos convertir la instancia del modelo en un diccionario para que pueda serializarse en datos JSON:

data = {
    
    "name": "Muller", "age": 30, "hobby": ['football', 'reading', 'running']}
person = Person(**data)

person_dict = person.dict()
print(person_dict)
  1. Manejar errores de validación

Cuando la validación falla, Pydantic proporciona información detallada del error para que podamos manejar el error. Podemos pydantic.ValidationErroracceder a la información de error detectando excepciones. Aquí hay un ejemplo:

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)

Podemos ver que el resultado contiene un mensaje de error con información detallada sobre el error de validación, lo que nos ayudará a identificar y resolver rápidamente el problema.

  1. Reglas de validación personalizadas

Además de la validación de tipos básica, también podemos personalizar las reglas de validación. Por ejemplo, si queremos asegurarnos de que la edad esté dentro de un rango específico, podemos @validatordefinir una función de validación personalizada usando un decorador:

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

En este ejemplo, definimos un age_must_be_positivemétodo que verificará que la edad sea un número entero positivo.

Resumir

Pydantices una poderosa biblioteca de Python para validación y análisis de datos. Le permite definir fácilmente modelos de datos, validar datos, manejar errores y personalizar reglas de validación. Ya sea que esté creando una aplicación web, una API, una herramienta de línea de comandos o cualquier otro tipo de aplicación Python, puede Pydanticayudarnos a procesar datos más fácilmente. Pydantic¡Espero que este artículo sea útil para que todos comiencen !

Supongo que te gusta

Origin blog.csdn.net/Tester_muller/article/details/132904614
Recomendado
Clasificación