」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 使用factory_boy時為Faker提供更好的自動完成功能

使用factory_boy時為Faker提供更好的自動完成功能

發佈於2024-08-07
瀏覽:874

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),
    )

到達屬性呼叫Faker的date_ Between_dates()方法。不幸的是,factory.Faker() 不會告訴您哪些 Faker 方法可用,也不會告訴您選擇 Faker 方法後接受哪些參數。此程式碼削弱了語言伺服器提供的優勢。

工廠中的自動補全 Faker

您可以透過在factory.LazyFunction()中包裝Faker呼叫來在將Faker與factory_boy一起使用時獲得自動完成功能:

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()的函數在工廠建立實例時進行評估。我們將 faker 呼叫包裝在 lambda 中,以便可以為其提供參數。您的語言伺服器可以向您顯示 fake.date_ Between_dates() 接受哪些參數。

當 faker 函數不需要任何參數時,設定就會減少。以下是如何將factory.LazyFunction()與Faker的first_name()和last_name()方法一起使用:

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