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.
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)
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