Sebelum autolengkap dikuasakan pelayan bahasa terdapat di mana-mana, tidak kira jika kod ditulis dengan cara yang memudahkan autolengkap. Editor teks popular seperti Sublime tidak cukup memahami kod untuk memberikan cadangan yang bermakna. Pengaturcara sama ada menghafal arahan kebergantungan mereka atau mereka merujuk dokumentasi.
Pada tahun 2024 autolengkap ada di mana-mana, tetapi pakej kami tidak semestinya memudahkan tugasnya. Ambil contoh ini daripada dokumentasi 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), )
Atribut ketibaan memanggil kaedah date_between_dates() Faker. Malangnya, factory.Faker() tidak memberitahu anda kaedah Faker yang tersedia dan ia tidak akan memberitahu anda parameter yang diterima oleh kaedah Faker sebaik sahaja anda memilihnya. Kod ini mengurangkan faedah yang disediakan oleh pelayan bahasa.
Anda boleh mendapatkan autolengkap semasa menggunakan Faker dengan factory_boy dengan membungkus panggilan Faker di kilang.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), ))
Fungsi dihantar ke kilang.LazyFunction() menilai apabila kilang mencipta tika. Kami membungkus panggilan palsu kami dalam lambda supaya kami boleh memberikannya hujah. Dan pelayan bahasa anda boleh menunjukkan kepada anda parameter yang fake.date_between_dates() terima.
Terdapat kurang persediaan apabila fungsi palsu tidak memerlukan sebarang hujah. Berikut ialah cara anda boleh menggunakan factory.LazyFunction() dengan kaedah first_name() dan 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)
Kod yang terhasil adalah lebih lama sedikit berbanding jika kami menggunakan factory.Faker(), tetapi bantuan daripada pelayan bahasa amat berbaloi untuk saya. Tanpanya, saya mungkin perlu sentiasa menyemak dokumentasi.
Jika terlalu banyak untuk menaip, anda sentiasa boleh menyamakannya kepada sesuatu yang lebih pendek:
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)
Atas ialah kandungan terperinci Dapatkan autolengkap yang lebih baik untuk Faker apabila menggunakan factory_boy. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!