"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > احصل على إكمال تلقائي أفضل لـ Faker عند استخدام Factory_boy

احصل على إكمال تلقائي أفضل لـ Faker عند استخدام Factory_boy

تم النشر بتاريخ 2024-08-07
تصفح:135

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

تستدعي سمة الوصول طريقة date_between_dates() الخاصة بـ Faker. لسوء الحظ، لا يخبرك Factory.Faker()‎ عن طرق Faker المتاحة، ولن يخبرك عن المعلمات التي تقبلها طريقة Faker بمجرد تحديد واحدة. يخفف هذا الرمز من الفوائد التي توفرها خوادم اللغة.

الإكمال التلقائي للفايكر في المصانع

يمكنك الحصول على الإكمال التلقائي أثناء استخدام Faker مع Factory_boy عن طريق تغليف مكالمة Faker في المصنع.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),
    ))

يتم تقييم الوظائف التي تم تمريرها إلى المصنع.LazyFunction() عندما يقوم المصنع بإنشاء مثيل. نقوم بتغليف مكالمتنا المزيفة في لامدا حتى نتمكن من تقديم الحجج لها. ويمكن لخادم اللغة الخاص بك أن يوضح لك المعلمات التي يقبلها fake.date_between_dates().

يكون الإعداد أقل عندما لا تحتاج الدالة المزيفة إلى أي وسيطات. إليك كيفية استخدامfactor.LazyFunction()‎ مع طريقتي Faker's 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