2011-11-14 28 views
5

kodu:Doctest varsayalım ben şu var

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() 

Ve en foo.py. olarak kaydedin izin Ben çalıştırdığınızda:

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. 

girinti denediniz docstring'ini (>>> a = '' '... ''' tüm girintiler kontrol ettirin - Her girinti için 4 boşluk.) Ve çift alıntı tek alıntı değişti (>>> a = "" "...." ""), hatalar farklı ve doctest sadece başarılı olmayacak. Şu anda işin tek işi, tüm satırları son derece uzun bir dizeye eklemek ve '\ r \ n' ile ayırmaktır.

Bir şey özlüyor muyum?

cevap

9

Sana ben değil başparmak-up (15 itibar gerekli), ancak Cevabınız için teşekkürler orada

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

bazı noktalar koymak gerek. Cevabınız mükemmel çalışıyor. – user1045217

+1

Sadece ** doctest ** 'in * çift tırnak işareti ile alıntılanması gerektiğini belirtmek istiyorum. Cevap ** docstring ** alıntıdır * tek * alıntı. Dokuz tavsiyem tek bir alıntıyla alıntılanmıştı ve neden işe yaramadığını anlayamadım. – Forethinker

+0

@Forethinker: teşekkürler! BTW, bu site ortaklaşa düzenlenmiş, bariz bir hata gördüğünüzde, yayını düzenlemek ve düzeltmek için çekinmeyin. – georg