मैं नमूना कोड का निम्न भाग पर काम करने के mock.patch पाने के लिए कोशिश कर रहा हूँ में इंपोर्ट स्टेटमेंट:से नकली पैचिंग/अजगर
d: defaultdict(None, {})
जिसका मतलब है:
from mock import patch
from collections import defaultdict
with patch('collections.defaultdict'):
d = defaultdict()
print 'd:', d
यह निम्न आउटपुट कि डिफॉल्टडिक्ट पैच नहीं किया गया था।
अगर मैं एक सीधे इंपोर्ट स्टेटमेंट यह काम करता है के साथ से/आयात बयान बदल देते हैं:
from mock import patch
import collections
with patch('collections.defaultdict'):
d = collections.defaultdict()
print 'd:', d
आउटपुट है:
d: <MagicMock name='defaultdict()' id='139953944084176'>
वहाँ एक कॉल/आयात से का उपयोग कर पैच करने के लिए कोई तरीका है?
from mock import patch
from collections import defaultdict
with patch('__main__.defaultdict'):
d = defaultdict()
print 'd:', d
यदि आप किसी आयातित मॉड्यूल के लिए कुछ मजाक कर रहे हैं, हालांकि, आप चाहेंगे:
क्या इसका मतलब यह नहीं है कि यदि आप 'एक्स आयात वाई' या 'आयात X.Y'' का उपयोग करते हैं तो क्या आप कार्यान्वयन विस्तार को बदलते हैं, तो आपके यूनिट परीक्षण चुपचाप बहुत अलग व्यवहार करना शुरू कर देंगे? – detly
@detly: मुझे विश्वास है कि यह सच है, हालांकि मैं नकली से परिचित नहीं हूं इसलिए मैं अनुभव से नहीं कह सकता। – BrenBarn
@ हाल ही में हाँ, यह सही है – Daenyth