doctest busca sesiones interactivas en las docstrings y compara la salida real con la salida escrita. Así evita que los ejemplos breves queden desactualizados cuando cambia la implementación.
Ejemplo práctico
def total_with_tax(value: float, rate: float) -> float:
"""Return the total after tax.
>>> total_with_tax(100, 0.2)
120.0
>>> total_with_tax(50, 0)
50.0
"""
return value * (1 + rate)
if __name__ == "__main__":
import doctest
doctest.testmod(verbose=True)
Cómo ejecutar el ejemplo
El bloque llama a testmod() solo al ejecutar el archivo directamente. También puedes usar python -m doctest -v archivo.py. La comparación es textual, por lo que importan la representación, los espacios y los decimales.
Cuándo resulta útil
Úsalo para contratos pequeños, tutoriales y ejemplos de API. No ocultes una preparación extensa en la docstring. Las fixtures, muchos escenarios y los informes de error detallados encajan mejor en una suite convencional.
Cuidados prácticos
No registres salidas inestables, como direcciones de memoria u orden de conjuntos. Opciones como ELLIPSIS ayudan, pero demasiada tolerancia puede aceptar un ejemplo incorrecto.
Sigue aprendiendo
Refuerza la base con pruebas unitarias con unittest. A documentación oficial de Python, consultada el 22 de julio de 2026, detalla la API, las limitaciones y las diferencias entre versiones.