「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Factory_boy 使用時の Faker のオートコンプリートが改善されました

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

2024 年 8 月 7 日に公開
ブラウズ:582

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_boy で Faker を使用しているときに、factory.LazyFunction():
で 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)
リリースステートメント この記事は次の場所に転載されています: https://dev.to/tylerlwsmith/get-better-autocomplete-for-faker-when-using-factoryboy-kki?1 侵害がある場合は、[email protected] に連絡して削除してください。それ
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3