Heim > Artikel > Backend-Entwicklung > Erhalten Sie eine bessere automatische Vervollständigung für Faker, wenn Sie „factory_boy“ verwenden
Bevor die automatische Vervollständigung durch Sprachserver allgegenwärtig war, spielte es keine Rolle, ob der Code so geschrieben war, dass die automatische Vervollständigung einfach war. Beliebte Texteditoren wie Sublime waren nicht in der Lage, den Code ausreichend zu verstehen, um sinnvolle Vorschläge zu liefern. Programmierer haben sich entweder die Befehle ihrer Abhängigkeiten gemerkt oder auf die Dokumentation verwiesen.
Im Jahr 2024 ist Autovervollständigung allgegenwärtig, aber unsere Pakete haben es nicht unbedingt einfacher gemacht. Nehmen Sie dieses Beispiel aus der Dokumentation von 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), )
Das Arrival-Attribut ruft die date_between_dates()-Methode von Faker auf. Leider sagt Ihnen „factory.Faker()“ nicht, welche Faker-Methoden verfügbar sind, und es sagt Ihnen auch nicht, welche Parameter eine Faker-Methode akzeptiert, sobald Sie eine ausgewählt haben. Dieser Code mildert die Vorteile, die Sprachserver bieten.
Sie können eine automatische Vervollständigung erhalten, während Sie Faker mit Factory_boy verwenden, indem Sie einen Faker-Aufruf in Factory.LazyFunction() einbinden:
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), ))
Funktionen, die an Factory.LazyFunction() übergeben werden, werten aus, wenn die Factory eine Instanz erstellt. Wir verpacken unseren Faker-Aufruf in ein Lambda, damit wir ihm Argumente liefern können. Und Ihr Sprachserver kann Ihnen zeigen, welche Parameter fake.date_between_dates() akzeptiert.
Der Einrichtungsaufwand ist geringer, wenn die Faker-Funktion keine Argumente benötigt. So können Sie „factory.LazyFunction()“ mit den Methoden „first_name()“ und „last_name()“ von Faker verwenden:
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)
Der resultierende Code ist etwas länger, als wenn wir „factory.Faker()“ verwendet hätten, aber die Unterstützung durch den Sprachserver ist es mir wert. Ohne sie müsste ich möglicherweise ständig die Dokumentation überprüfen.
Wenn es zu viel zum Tippen ist, können Sie es jederzeit auf einen kürzeren Alias umstellen:
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)
Das obige ist der detaillierte Inhalt vonErhalten Sie eine bessere automatische Vervollständigung für Faker, wenn Sie „factory_boy“ verwenden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!