2012-06-20 15 views
14

आप ऐसे ही एक समारोह के लिए unittest -cases लिखना चाहते हैं:प्रिंट स्टेटमेंट का परीक्षण कैसे करें?

def test_me(a): 
    for b in c: 
     print do_something(a,b) 

सबसे पहले मैं सिर्फ एक स्ट्रिंग में do_something के आउटपुट का संग्रह है और फिर इसे वापस आ रहा, प्रिंट और एक साथ पूरे उत्पादन का परीक्षण करने के बारे में सोचा। लेकिन यह हमेशा अविश्वसनीय नहीं है क्योंकि ऐसी लापरवाही परिस्थितियों के आधार पर आपके बफर स्ट्रिंग को बहुत बड़ी हो सकती है। तो आउटपुट का परीक्षण करने के लिए आप क्या कर सकते हैं, जब इसे मुद्रित किया जाता है और वापस नहीं किया जाता है?

+1

यह सहायता? http://stackoverflow.com/questions/5136611/capture-stdout-from-a-script-in-python –

+1

'उपज' कथन का उपयोग करें? –

+0

@ ऊपर की टिप्पणियां: मुझे नहीं पता कि बिना किसी चीज के लिए एक सामान्य दृष्टिकोण क्या है, दोनों संभव हो सकते हैं। – erikbwork

उत्तर

12

printsys.stdout पर प्रिंट करता है, जिसे आप चाहें तो अपनी खुद की वस्तु को फिर से सौंप सकते हैं। आपकी ऑब्जेक्ट की केवल एक चीज है write फ़ंक्शन जो एक स्ट्रिंग तर्क लेता है।

पाइथन 2.6 के बाद से आप print को अपनी स्क्रिप्ट के शीर्ष पर from __future__ import print_function जोड़कर एक भाषा निर्माण के बजाए फ़ंक्शन बनने के लिए भी बदल सकते हैं। इस तरह आप अपने स्वयं के फ़ंक्शन के साथ print ओवरराइड कर सकते हैं।

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