До того, как автозаполнение с помощью языкового сервера стало повсеместным, не имело значения, был ли код написан таким образом, чтобы сделать автозаполнение простым. Популярные текстовые редакторы, такие как 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 с 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)
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3