15.5. Resumen

Las pruebas unitarias son un concepto potente que, si se implementa adecuadamente, puede tanto reducir el coste de mantenimiento como incrementar la flexibilidad en cualquier proyecto a largo plazo. Es importante también entender que las pruebas unitarias no son la panacea, un Resolutor Mágico de Problemas o una bala de plata. Escribir buenos casos de prueba es duro, y mantenerlos actualizados necesita disciplina (especialmente cuando los clientes están gritando que quieren arreglos para fallos críticos). Las pruebas unitarias no sustituyen otras formas de comprobación, incluyendo las pruebas funcionales, las de integración y las de aceptación del cliente. Pero son factibles y funcionan, y una vez que las ha visto trabajando uno se pregunta cómo ha podido pasar sin ellas hasta ahora.

Este capítulo ha cubierto mucho terreno del que bastante ni siquiera era específico de Python. Hay infraestructura de pruebas unitarias para muchos lenguajes, y todos precisan que entienda los mismos conceptos básicos:

  • Diseñe casos de prueba que sean específicos, automáticos e independientes
  • Escriba los casos de prueba antes que el código que van a probar
  • Escriba pruebas que pasen entradas correctas y comprueben que los resultados son adecuados
  • Escriba pruebas que pasen entradas incorrectas y comprueben que aparecen los fallos adecuados
  • Escriba y actualice casos de prueba para ilustrar fallos o reflejar nuevos requisitos
  • Refactorice sin piedad para mejorar el rendimiento, la escalabilidad, legibilidad, mantenibilidad o cualquier otra -idad que le falte

Además, debería sentirse cómodo haciendo las siguientes cosas específicas a Python:

  • Derivar unittest.TestCase y escribir métodos para casos de prueba individuales
  • Usar assertEqual para comprobar que una función devuelve un valor conocido
  • Usar assertRaises para comprobar que una función lanza una excepción conocida
  • Invocar a unittest.main() desde su cláusula if __name__ para ejecutar todos los casos de prueba a la vez
  • Ejecutar pruebas unitarias en modo prolijo o normal

Lecturas complementarias