"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > फ़ैक्टरी_बॉय का उपयोग करते समय फ़ेकर के लिए बेहतर स्वत: पूर्ण प्राप्त करें

फ़ैक्टरी_बॉय का उपयोग करते समय फ़ेकर के लिए बेहतर स्वत: पूर्ण प्राप्त करें

2024-08-07 को प्रकाशित
ब्राउज़ करें:827

Get better autocomplete for Faker when using factory_boy

भाषा सर्वर द्वारा संचालित स्वत: पूर्णता सर्वव्यापी होने से पहले, इससे कोई फर्क नहीं पड़ता था कि कोड इस तरह से लिखा गया था कि स्वत: पूर्णता आसान हो जाए। सबलाइम जैसे लोकप्रिय पाठ संपादक सार्थक सुझाव प्रदान करने के लिए कोड को पर्याप्त रूप से समझने में सक्षम नहीं थे। प्रोग्रामर ने या तो अपनी निर्भरता के आदेशों को याद कर लिया या उन्होंने दस्तावेज़ीकरण का संदर्भ दिया।

2024 में स्वत: पूर्णता हर जगह है, लेकिन हमारे पैकेजों ने जरूरी नहीं कि इसका काम आसान बना दिया हो। फ़ैक्टरी बॉय के दस्तावेज़ से यह उदाहरण लें:

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() विधि को कॉल करती है। दुर्भाग्य से, फ़ैक्टरी.फ़ेकर() आपको यह नहीं बताता कि कौन-सी फ़ेकर विधियाँ उपलब्ध हैं, और यह आपको यह नहीं बताएगा कि आपके द्वारा किसी एक को चुनने के बाद फ़ेकर विधि कौन से पैरामीटर स्वीकार करती है। यह कोड भाषा सर्वर द्वारा प्रदान किए जाने वाले लाभों को कम करता है।

फ़ैक्टरियों में स्वत: पूर्ण करने वाला फ़ेकर

आप फैक्ट्री_बॉय के साथ फ़ेकर का उपयोग करते समय फ़ैक्टरी कॉल को फ़ैक्टरी में लपेटकर स्वतः पूर्ण प्राप्त कर सकते हैं।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() मूल्यांकन करता है। हम अपनी फेकर कॉल को लैम्ब्डा में लपेटते हैं ताकि हम उसे तर्क प्रदान कर सकें। और आपका भाषा सर्वर आपको दिखा सकता है कि false.date_between_dates() कौन से पैरामीटर स्वीकार करता है।

जब फ़कर फ़ंक्शन को किसी तर्क की आवश्यकता नहीं होती है तो कम सेट-अप होता है। यहां बताया गया है कि आप फ़ैकर के पहले_नाम() और अंतिम_नाम() तरीकों के साथ फ़ैक्टरी.लेज़ीफ़ंक्शन() का उपयोग कैसे कर सकते हैं:

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)

परिणामस्वरूप कोड थोड़ा लंबा है, यदि हमने फ़ैक्टरी.फ़ेकर() का उपयोग किया होता, लेकिन भाषा सर्वर से सहायता मेरे लिए इसके लायक है। इसके बिना, मुझे दस्तावेज़ीकरण की लगातार जाँच करने की आवश्यकता हो सकती है।

यदि यह टाइप करने के लिए बहुत अधिक है, तो आप इसे हमेशा कुछ छोटा कर सकते हैं:

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 यदि कोई उल्लंघन है, तो कृपया हटाने के लिए स्टडी_गोलंग@163.com से संपर्क करें। यह
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3