言語サーバーによるオートコンプリートが普及する前は、オートコンプリートを容易にする方法でコードが記述されているかどうかは問題ではありませんでした。 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 メソッドを選択した後にそのメソッドがどのようなパラメータを受け入れるかについてもわかりません。このコードは、言語サーバーが提供する利点を軽減します。
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)
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3