"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Obtenga un mejor autocompletado para Faker cuando use factory_boy

Obtenga un mejor autocompletado para Faker cuando use factory_boy

Publicado el 2024-08-07
Navegar:876

Get better autocomplete for Faker when using factory_boy

Antes de que el autocompletado impulsado por un servidor de idiomas fuera omnipresente, no importaba si el código estaba escrito de una manera que facilitara el autocompletado. Los editores de texto populares como Sublime no pudieron comprender el código lo suficiente como para brindar sugerencias significativas. Los programadores memorizaron los comandos de sus dependencias o consultaron la documentación.

En 2024, el autocompletado está en todas partes, pero nuestros paquetes no necesariamente han facilitado su trabajo. Tome este ejemplo de la documentación de Factory Boy:

import factory
from datetime import datetime
from .models import User

class UserFactory(factory.Factory):
    class Meta:
        model = User

    arrival = factory.Faker(
        'date_between_dates',
        date_start=datetime.date(2020, 1, 1),
        date_end=datetime.date(2020, 5, 31),
    )

El atributo de llegada llama al método date_between_dates() de Faker. Desafortunadamente, factory.Faker() no le dice qué métodos Faker están disponibles y no le dirá qué parámetros acepta un método Faker una vez que selecciona uno. Este código mitiga los beneficios que brindan los servidores de idiomas.

Autocompletar Faker en fábricas

Puedes completar automáticamente mientras usas Faker con factory_boy envolviendo una llamada de Faker en factory.LazyFunction():

import factory
from datetime import datetime
from .models import User

fake = Faker()

class UserFactory(factory.Factory):
    class Meta:
        model = User

    arrival = factory.LazyFunction(lambda: fake.date_between_dates(
        date_start=datetime.date(2020, 1, 1),
        date_end=datetime.date(2020, 5, 31),
    ))

Las funciones pasadas a factory.LazyFunction() evalúan cuando la fábrica crea una instancia. Envolvemos nuestra llamada falsa en una lambda para poder proporcionarle argumentos. Y su servidor de idiomas puede mostrarle qué parámetros acepta fake.date_between_dates().

Hay menos configuración cuando la función falsificadora no necesita ningún argumento. Así es como puedes usar factory.LazyFunction() con los métodos first_name() y last_name() de Faker:

import factory
from datetime import datetime
from .models import User

fake = Faker()

class UserFactory(factory.Factory):
    class Meta:
        model = User

    first_name = factory.LazyFunction(fake.first_name)
    last_name = factory.LazyFunction(fake.last_name)

El código resultante es un poco más largo de lo que sería si hubiéramos usado factory.Faker(), pero la ayuda del servidor de idiomas para mí vale la pena. Sin él, es posible que necesite revisar la documentación constantemente.

Si es demasiado para escribir, siempre puedes asignarle un alias a algo más corto:

from factory import Factory, LazyFunction as LazyFn
from datetime import datetime
from .models import User

fake = Faker()

class UserFactory(Factory):
    class Meta:
        model = User

    first_name = LazyFn(fake.first_name)
    last_name = LazyFn(fake.last_name)
Declaración de liberación Este artículo se reproduce en: https://dev.to/tylerlwsmith/get-better-autocomplete-for-faker-when-using-factoryboy-kki?1 Si hay alguna infracción, comuníquese con [email protected] para eliminar él
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3