2011-11-14 16 views
5

मान लीजिए मैं निम्नलिखित है कोड:Doctest

def foo(s): 
    """A dummy function foo. For example: 

>>> a = '''This is a test string line 1 
This is a test string line 2 
This is a test string line 3''' 
>>> foo(a) 
This is a test string line 1 
This is a test string line 2 
This is a test string line 3 
>>> 
    """ 
    print s 

if __name__ == '__main__': 
    import doctest 
    doctest.testmod() 

और इसे foo.py. के रूप में सहेजने की अनुमति देना जब मैं चलाएँ:

C:\Python27>python.exe foo.py 
********************************************************************** 
File "foo.py", line 5, in __main__.foo 
Failed example: 
    a = '''This is a test string line 1 
Exception raised: 
    Traceback (most recent call last): 
     File "C:\Python27\lib\doctest.py", line 1254, in __run 
     compileflags, 1) in test.globs 
     File "<doctest __main__.foo[0]>", line 1 
     a = '''This is a test string line 1 
             ^
    SyntaxError: EOF while scanning triple-quoted string literal 
********************************************************************** 
File "foo.py", line 8, in __main__.foo 
Failed example: 
    foo(a) 
Exception raised: 
    Traceback (most recent call last): 
     File "C:\Python27\lib\doctest.py", line 1254, in __run 
     compileflags, 1) in test.globs 
     File "<doctest __main__.foo[1]>", line 1, in <module> 
     foo(a) 
    NameError: name 'a' is not defined 
********************************************************************** 
1 items had failures: 
    2 of 2 in __main__.foo 
***Test Failed*** 2 failures. 

मांगपत्र की कोशिश की है docstring (>>> एक = '' '...' '' सब इंडेंट जांच की है - प्रत्येक मांगपत्र के लिए 4 स्थानों।) और दोहरे उद्धरण के लिए एकल उद्धरण बदल (>>> ए = "" "...." ""), त्रुटियां अलग हैं और सबसे बुद्धिमान सफलतापूर्वक नहीं चलेगी। वर्तमान में केवल एकमात्र चीज है कि सभी लाइनों को चरम लंबी स्ट्रिंग में शामिल करना और '\ r \ n' से अलग होना है।

क्या मुझे कुछ याद आती है?

उत्तर

9

मैं आपको कुछ डॉट्स वहाँ

>>> a = """This is a test string line 1 
... This is a test string line 2 
... This is a test string line 3""" 
+0

हालांकि मैं नहीं अंगूठे-अप (15 प्रतिष्ठा) की आवश्यकता कर सकते हैं, आपके उत्तर के लिए धन्यवाद लगाने की जरूरत है लगता है। आपका जवाब पूरी तरह से काम करता है। – user1045217

+1

मैं सिर्फ यह उल्लेख करना चाहता हूं कि ** डॉक्टेस्ट ** को * डबल * कोट्स के साथ उद्धृत करने की आवश्यकता है। उत्तर में ** डॉकस्ट्रिंग ** उद्धृत * एकल * उद्धरण है। मैंने अपने उद्धरण को एकल उद्धरण में उद्धृत किया था, और मुझे पता नहीं लगा कि यह क्यों काम नहीं कर रहा था। – Forethinker

+0

@Forethinker: धन्यवाद! बीटीडब्ल्यू, जब आप एक स्पष्ट गलती देखते हैं, तो इस साइट को सहयोगी रूप से संपादित किया जाता है, पोस्ट को संपादित करने और इसे सही करने के लिए स्वतंत्र महसूस करें। – georg