से मेल खाती है तो मूल कार्य को कॉल करें मैं सशर्त रूप से नकली विधि को नकली में कैसे कॉल कर सकता हूं?सशर्त मॉकिंग: यदि स्थिति
इस उदाहरण में मैं केवल bar=='x'
पर वापसी मूल्य चाहता हूं। अन्यथा मैं मूल विधि को कॉल करना चाहता हूं।
def mocked_some_method(bar):
if bar=='x':
return 'fake'
return some_how_call_original_method(bar)
with mock.patch('mylib.foo.some_method', mocked_some_method):
do_some_stuff()
मुझे पता है कि यह थोड़ा अजीब है। अगर मैं नकली mylib.foo.some_method
पक्ष do_some_stuff()
में चाहता हूं तो यह स्थिति-कम होना चाहिए। some_method
पर सभी (कुछ नहीं) कॉल मॉक किए जाने चाहिए।
मेरे मामले में यह एकीकरण परीक्षण है, न कि एक छोटे से छोटे और mylib.foo.some_method
एक प्रकार का प्रेषक है जो अक्सर उपयोग किया जाता है। और एक मामले में मुझे परिणाम नकली करने की जरूरत है।
"स्थैतिक" के साथ आपका क्या मतलब है: "मुझे लगता है कि कुछ_method स्थिर नहीं है ..."? – guettli
आप सही हैं। रैपर के रूप में नकली सबसे अच्छा अभ्यास नहीं है। मैंने इसे प्रतिबिंबित करने के लिए प्रश्न अपडेट किया। – guettli
@guettli आपके प्रश्न से मैं अनुमान लगा सकता हूं कि 'some_method' 'staticmethod' नहीं है लेकिन एक ऑब्जेक्ट विधि है .... मैं साइड नोट को हटाकर अपना जवाब बदल दूंगा लेकिन यह आपकी आवश्यकताओं को पहले से ही फिट कर सकता है। –