"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Obtenha melhor preenchimento automático para Faker ao usar factory_boy

Obtenha melhor preenchimento automático para Faker ao usar factory_boy

Publicado em 2024-08-07
Navegar:135

Get better autocomplete for Faker when using factory_boy

Antes que o preenchimento automático baseado em servidor de linguagem fosse onipresente, não importava se o código fosse escrito de uma forma que tornasse o preenchimento automático fácil. Editores de texto populares como o Sublime não conseguiam entender o código o suficiente para fornecer sugestões significativas. Os programadores memorizaram os comandos de suas dependências ou referenciaram a documentação.

Em 2024, o preenchimento automático está em toda parte, mas nossos pacotes não necessariamente facilitaram seu trabalho. Veja este exemplo da documentação do 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),
    )

O atributo de chegada chama o método date_between_dates() do Faker. Infelizmente, factory.Faker() não informa quais métodos Faker estão disponíveis e não informa quais parâmetros um método Faker aceita quando você seleciona um. Este código atenua os benefícios que os servidores de idiomas oferecem.

Preenchimento automático do Faker nas fábricas

Você pode obter o preenchimento automático ao usar o Faker com factory_boy encerrando uma chamada do Faker em 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),
    ))

Funções passadas para factory.LazyFunction() avaliam quando a fábrica cria uma instância. Envolvemos nossa chamada falsa em um lambda para que possamos fornecer argumentos. E seu servidor de idioma pode mostrar quais parâmetros fake.date_between_dates() aceita.

Há menos configuração quando a função faker não precisa de argumentos. Aqui está como você pode usar factory.LazyFunction() com os métodos first_name() e last_name() do 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)

O código resultante é um pouco mais longo do que seria se tivéssemos usado factory.Faker(), mas a ajuda do servidor de linguagem vale a pena para mim. Sem ele, talvez eu precise verificar constantemente a documentação.

Se for muito para digitar, você sempre pode usar um alias para algo mais curto:

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)
Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/tylerlwsmith/get-better-autocomplete-for-faker-when-using-factoryboy-kki?1 Se houver alguma violação, entre em contato com [email protected] para excluir isto
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3