Supongamos que tengo siguiente código:doctest para la cadena de documentación anidada
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()
Y ahorrémoslo como foo.py. Cuando corro:
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.
han tratado guión de la cadena de documentación (>>> a = '' '... ''' Han comprobado todos los guiones - 4 espacios para cada guión.) Y cambió comilla simple a doble comilla (>>> a = "" "...." ""), los errores son diferentes y el doctest simplemente no se ejecutará correctamente. Actualmente, lo único que funciona es unir todas las líneas a una cadena extremadamente larga y separarlas con '\ r \ n'.
¿Extraño algo?
aunque no puedo pulgar hacia arriba (requerido reputación 15), gracias por su respuesta. Tu respuesta funciona a la perfección. – user1045217
Solo quiero mencionar que el ** doctest ** debe ser citado con * doble * comillas. La respuesta tiene ** docstring ** es citado * single * quote. Tuve mi doctest citado en comillas simples, y no pude entender por qué no estaba funcionando. – Forethinker
@Forethinker: ¡gracias! Por cierto, este sitio se edita en colaboración, cuando ve un error obvio, siéntase libre de editar la publicación y corregirla. – georg