मैं परीक्षण फिक्स्चर बनाने के लिए factory_boy का उपयोग कर रहा हूं। मेरे पास दो सरल कारखानियां हैं, जो एसक्लाक्लेमी मॉडल द्वारा समर्थित हैं (नीचे सरलीकृत)।factory_boy कारखानों के साथ डुप्लिकेट से बचें
मैं कई बार AddressFactory.create()
पर कॉल करने में सक्षम होना चाहता हूं, और यदि यह पहले से मौजूद नहीं है, तो यह Country
बना सकता है, अन्यथा मैं मौजूदा रिकॉर्ड का पुन: उपयोग करना चाहता हूं।
class CountryFactory(factory.Factory):
FACTORY_FOR = Country
cc = "US"
name = "United States"
class AddressFactory(factory.Factory):
FACTORY_FOR = Address
name = "Joe User"
city = "Seven Mile Beach"
country = factory.SubFactory(CountryFactory, cc="KY", name="Cayman Islands")
मेरा प्रश्न है: कैसे मैं इन कारखाने स्थापित कर सकते हैं कि factory_boy एक नया देश हर बार यह एक पता बनाता है बनाने की कोशिश नहीं कर रहा है तो?
आप ([factory.alchemy] पर एक नज़र https://github.com/rbarrois/factory_boy/blob/master/factory ली /alchemy.py)? – javex
सुनिश्चित नहीं है कि आप उस लिंक में क्या संदर्भ दे रहे हैं; उस विशिष्ट फ़ाइल में कुछ भी नहीं है जो उपयोगी लगता है। मैंने फ़ैक्टरी_बॉय और विशेष रूप से स्क्लाक्लेमी फैक्ट्री के लिए दस्तावेज़ों को देखा है, लेकिन मैंने रिकॉर्ड्स का पुन: उपयोग करने के बारे में कुछ भी नहीं देखा है। मूल रूप से "ढूंढें या बनाएं" प्रकार की कार्यक्षमता की तलाश में। –
इसमें अधिक शोध करने के बाद, संक्षिप्त जवाब यह है कि आप इसे नहीं कर सकते हैं। [Django मॉडल के साथ मिल-या-निर्माण] के लिए समर्थन है (https://factoryboy.readthedocs.org/en/latest/orms.html#factory.django.DjangoModelFactory.FACTORY_DJANGO_GET_OR_CREATE), लेकिन SQLAlchemy नहीं। मैं इस सवाल को खुला छोड़ रहा हूं क्योंकि मैं इन दिनों में से किसी एक के लिए स्क्लेक्लेमी समर्थन जोड़ने की उम्मीद कर रहा हूं यदि कोई मुझे इसके लिए धड़कता नहीं है। –