Supponiamo che io abbia seguente codice:doctest per docstring nidificato
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()
E salviamo come foo.py. Quando eseguo:
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.
hanno cercato trattino il docstring (>>> a = '' '... ''' Hanno controllato tutti i trattini - 4 posti per ciascun trattino.) E ha cambiato apostrofo a doppio apice (>>> a = "" "...." ""), gli errori sono diversi e il doctest non andrà a buon fine. Attualmente l'unica cosa che funziona è unire tutte le linee a una stringa lunga estrema e separarle con '\ r \ n'.
Mi manca qualcosa?
anche se posso non thumb-up (15 reputazione richiesto), grazie per la risposta. La tua risposta funziona perfettamente. – user1045217
Voglio solo ricordare che il ** doctest ** deve essere citato con * doppie * virgolette. La risposta ha ** docstring ** è quotata * singola * citazione. Ho avuto il mio doctest citato in virgolette, e non riuscivo a capire perché non funzionava. – Forethinker
@Forethinker: grazie! A proposito, questo sito è modificato in modo collaborativo, quando vedi un errore evidente, sentiti libero di modificare il post e correggerlo. – georg