ホームページ > バックエンド開発 > Python チュートリアル > Factory_boy 使用時の Faker のオートコンプリートが改善されました

Factory_boy 使用時の Faker のオートコンプリートが改善されました

WBOY
リリース: 2024-07-27 14:42:33
オリジナル
845 人が閲覧しました

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 呼び出しをラップすることで、factory_boy で Faker を使用しているときにオートコンプリートを取得できます。

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 呼び出しをラムダでラップします。また、言語サーバーは、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)
ログイン後にコピー

以上がFactory_boy 使用時の Faker のオートコンプリートが改善されましたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート