El módulo doctest busca cualquier cadenas de documentación en un archivo y ejecuta cualquier código incrustado en él, así que sí, es posible usar doctest para las clases.
En cuanto a si es mejor poner los doctests en el docstring de la clase o el constructor, creo que eso depende de lo que esté documentando exactamente.
Si el docstring da una descripción general de la clase y cómo usarla, entonces creo que es mejor ponerlo en la clase.
Si la docstring es específicamente sobre cómo crear instancias de la clase, entonces debe ir en el método __init__
.
Recuerde que la intención de doctests es principalmente tener auto-validación de código de ejemplo en la documentación, por lo que en mi humilde opinión el aspecto de la documentación debe tener prioridad sobre el aspecto de prueba.
Editar:
En el ejemplo anterior no hay ningún código para ejecutar el doctest - corriendo python test.py -v
ejecutará el código Python principal, que simplemente define la clase.
es necesario agregar esto al final del archivo:
if __name__ == "__main__":
import doctest
doctest.testmod()
alternativa Si está utilizando Python 2.6 o posterior ejecutarlo con:
python -m doctest -v test.py
Como nota al margen, siempre heredan de 'object' más que nada para que estés usando * nuevo clases de estilo *. –
Excepto en python 3, donde solo hay clases de estilo nuevo, y 'object' está implícito sin padres declarados. – Daenyth