159 votos

Python - doctest vs. unittest

Estoy tratando de empezar con las pruebas de unidad en Python y me preguntaba si alguien podría informarme de las ventajas y desventajas de doctest y unittest. ¿Para qué condiciones usarías cada uno?

176voto

Brian Puntos 48423

Ambos son valiosos. Utilizo tanto el doctest como un marco de pruebas de unidad adicional ( nariz ) tomando el lugar del unittest. Utilizo doctest para los casos en los que el test está dando un ejemplo de uso que es realmente útil como documentación. Generalmente no hago estas pruebas exhaustivas, con el único objetivo de informar. Utilizo doctest de forma efectiva a la inversa: no para comprobar que mi código es correcto en base a mi doctest, sino para comprobar que mi documentación es correcta en base al código.

La razón es que encuentro que las pruebas documentales exhaustivas desordenarán su documentación demasiado, por lo que terminará con las pruebas inutilizables o incompletas.

Para probar realmente el código el objetivo es probar a fondo cada caso, en lugar de ilustrar lo que se hace con el ejemplo, que es un objetivo diferente que creo que se cumple mejor con otros marcos.

48voto

S.Lott Puntos 207588

Uso casi exclusivamente el Unittest.

De vez en cuando, pondré algunas cosas en una cadena de doctorado que sea utilizable por doctest.

El 95% de los casos de prueba son de prueba unitaria.

¿Por qué? Me gusta mantener las cuerdas de los doctores algo más cortas y más al punto. A veces los casos de prueba ayudan a clarificar una cadena de carga. La mayoría de las veces, los casos de prueba de la aplicación son demasiado largos para una cadena de carga.

33voto

Jason Baker Puntos 56682

Otra ventaja de la prueba documental es que puedes asegurarte de que tu código hace lo que la documentación dice que hace. Después de un tiempo, los cambios en el software pueden hacer que tu documentación y tu código hagan cosas diferentes. :-)

28voto

dalloliogm Puntos 2628

Trabajo como bioinformático, y la mayor parte del código que escribo es "una vez, una tarea" scripts, código que se ejecutará sólo una o dos veces y que ejecuta una única tarea específica.

En esta situación, escribir grandes unittests puede ser una exageración, y los doctests son un compromiso útil. Son más rápidos de escribir, y como suelen estar incorporados en el código, permiten vigilar siempre cómo debe comportarse el código, sin necesidad de tener otro archivo abierto. Eso es útil cuando se escribe un pequeño script.

Además, los doctests son útiles cuando tienes que pasar tu script a un investigador que no sea experto en programación. A algunas personas les resulta muy difícil entender cómo están estructuradas las pruebas unitarias; por otro lado, las pruebas documentales son ejemplos sencillos de uso, por lo que la gente puede simplemente copiarlas y pegarlas para ver cómo se utilizan.

Así que, para resumir mi respuesta: los doctests son útiles cuando tienes que escribir pequeños scripts, y cuando tienes que pasarlos o mostrarlos a investigadores que no son informáticos.

14voto

Greg Hewgill Puntos 356191

Si acabas de empezar con la idea de la prueba de la unidad, yo empezaría con doctest porque es muy simple de usar. También proporciona naturalmente algún nivel de documentación. Y para una prueba más completa con doctest puede colocar las pruebas en un archivo externo para que no se llene la documentación.

Yo sugeriría unittest si vienes de un fondo de haber usado JUnit o algo similar, donde quieres ser capaz de escribir pruebas de unidad en general de la misma manera que has estado en otros lugares.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X