2011-08-30 9 views
5

Tengo los siguientes contenidos en un archivo llamado test2.txt.python doctest excepción manejo de prueba

>>> def faulty(): 
... yield 5 
... return 7 
Traceback(most recent call last): 
SyntaxError: 'return' with argument inside generator(<doctest test.txt[0]>,line 3) 

Invoco la ejecución de prueba con python -m test2.txt. Los resultados a continuación están bastante fuera de mis expectativas.

screenshot of terminal output

Mi pensamiento era que la prueba debe tener éxito porque he escrito el resultado esperado en mi archivo test2.txt y es casi 'concuerda con lo que tengo de la salida de la consola. Intenté agregar el 'File "G:\"'.... line? pero la prueba aún falló.

Respuesta

8

doctest es extremadamente cuidadoso con el formato de excepciones esperadas. Se ha perdido un espacio:

Traceback(most recent call last): debería ser Traceback (most recent call last):

Por otra parte, esto siguen sin funcionar, como su mensaje de rastreo es excesivamente específica (y también tiene un espacio en blanco incorrecto)! Utilice los ELLIPSIS o IGNORE_EXCEPTION_DETAIL banderas a doctest hacer doctest menos exigente con excepciones a juego, como tan:

>>> def faulty(): # doctest: +IGNORE_EXCEPTION_DETAIL 
...  yield 5 
...  return 7 
Traceback (most recent call last): 
SyntaxError: 'return' with argument inside generator (...) 

(ELLIPSIS funcionaría también en este caso)

+0

muchas gracias. Sigo tus consejos para modificar el archivo de texto inicial __extremely__ cuidadosamente y ahora funciona aunque todavía no he probado las ** banderas ** de las que hablas. Podría intentarlo a medida que avanza mi aprendizaje. – Tracy

+0

Vale la pena observar que este indicador también hace que se ignore el mensaje de excepción. – ony

Cuestiones relacionadas