2017-11-24 16 views
5

के साथ उपयोग करते समय, मैंने mos.patch.object का उपयोग करते समय नोसेटेट्स का एक बहुत ही अजीब व्यवहार देखा है फ़ंक्शन:एकाधिक परीक्षण चलाना @ mock.patch.object के साथ पैच करते समय और कभी-कभी 'mock.patch.object`

जब मैं एक साथ कई परीक्षण चलाता हूं तो मुझे अलग-अलग परिणाम मिलते हैं जब मैं उन्हें व्यक्तिगत रूप से चलाता हूं। विशेष रूप से, ऐसा होता है कि @ mock.patch.object के साथ ओवरराइड का कोई प्रभाव नहीं पड़ता है, कुछ मामलों में जब मैं एक साथ कई नोजेट्स चलाता हूं। जब मैं पैच को with के साथ लागू करता हूं, तो यह समस्या नहीं होती है।

@patch.object(ObjectToOverride,....) 
def test_mytest() 
    # check the override 

with विधि का उपयोग करते समय पैच लागू करने, बाद में परीक्षण पिछले परीक्षण से प्रभावित नहीं हैं।

def test_mytest() 
    with patch.object(ObjectToOverride,....): 
    # check the override 

कोई भी सुझाव जो इस व्यवहार की सराहना कर सकता है।

जब मैं एकाधिक परीक्षण चलाता हूं, ऑब्जेक्ट टॉ ओवरराइड लोड और पिछले परीक्षणों द्वारा उपयोग किया जाएगा। लेकिन मुझे नहीं पता कि क्यों या सजावट का उपयोग करना एक फर्क पड़ता है कि ऑब्जेक्ट अभी भी उसके बाद पैच किया जा सकता है या नहीं।

दोनों मामलों में, मैं परीक्षणों के बीच कुछ हस्तक्षेप देख सकता हूं। यह सबसे पहले से कैसे बचा जा सकता है?

+0

यदि आप कोड का एक ठोस उदाहरण प्रदान कर सकते हैं जो इस त्रुटि को पुन: उत्पन्न करता है तो यह सहायक होगा। जैसा कि यह है कि मैं समस्या को पुन: उत्पन्न नहीं कर सकता और वास्तव में मदद नहीं कर सकता। – Grr

उत्तर

2

समस्या यह है कि त्रुटियों को फेंकने वाले परीक्षणों से जुड़ा हुआ प्रतीत होता है। उसके बाद पैच सही ढंग से फाड़ा नहीं जाता है।

संबंधित मुद्दे