Dapatkan autolengkap yang lebih baik untuk Faker apabila menggunakan factory_boy

WBOY
Lepaskan: 2024-07-27 14:42:33
asal
781 orang telah melayarinya

Get better autocomplete for Faker when using factory_boy

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),
    )
Salin selepas log masuk

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.

Autolengkap Faker di kilang

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),
    ))
Salin selepas log masuk

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)
Salin selepas log masuk

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)
Salin selepas log masuk

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!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!