«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Улучшите автозаполнение Faker при использовании Factory_boy.

Улучшите автозаполнение Faker при использовании Factory_boy.

Опубликовано 7 августа 2024 г.
Просматривать:433

Get better autocomplete for Faker when using factory_boy

До того, как автозаполнение с помощью языкового сервера стало повсеместным, не имело значения, был ли код написан таким образом, чтобы сделать автозаполнение простым. Популярные текстовые редакторы, такие как Sublime, не могли понять код настолько, чтобы давать содержательные предложения. Программисты либо запоминали команды своих зависимостей, либо ссылались на документацию.

В 2024 году автозаполнение доступно повсюду, но наши пакеты не обязательно облегчают его работу. Возьмите этот пример из документации 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),
    )

Атрибут прибытия вызывает метод date_between_dates() Faker. К сожалению, Factory.Faker() не сообщает вам, какие методы Faker доступны, и не сообщает, какие параметры принимает метод Faker после того, как вы его выберете. Этот код сводит на нет преимущества, предоставляемые языковыми серверами.

Автозаполнение Faker на заводах

Вы можете получить автозаполнение при использовании Faker с Factory_boy, обернув вызов Faker в 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),
    ))

Функции, передаваемые в Factory.LazyFunction(), оценивают, когда фабрика создает экземпляр. Мы оборачиваем наш ложный вызов лямбда-выражением, чтобы предоставить ему аргументы. И ваш языковой сервер может показать вам, какие параметры принимает fake.date_between_dates().

Меньше настроек, если функция-фейкер не требует никаких аргументов. Вот как вы можете использовать Factory.LazyFunction() с методами First_name() и Last_name() 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)

Получающийся код немного длиннее, чем если бы мы использовали Factory.Faker(), но помощь языкового сервера того стоит. Без этого мне, возможно, придется постоянно проверять документацию.

Если текст слишком длинный, вы всегда можете использовать его как-нибудь короче:

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)
Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/tylerlwsmith/get-better-autocomplete-for-faker-when-using-factoryboy-kki?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить это
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3