En esta sección revisaremos:

  • Una introducción a Python
  • ¿Por qué invertir tiempo escribiendo pruebas?
  • Un vistazo al módulo de unittest
  • ¿Por qué utilizar pytest?

Una introducción a Pytest

Las pruebas automáticas son consideradas una herramienta y una metodología indispensable para producir software de calidad, más al mismo tiempo, para muchos es una parte aburrida y repetitiva del trabajo. Pero ese no tiene que ser el caso cuando utiliza pytest como su framework de prueba.

Las pruebas automáticas son importantes por que permite que su trabajo sea más sencillo y agradable.

El módulo estándar en Python para realizar pruebas es unittest, pero pytest tiene muchas más funcionalidades y es más fácil para empezar.

¿Por que invertir tiempo escribiendo pruebas?

Para los programadores es común que escribamos fragmentos de código, seguir tutoriales, ejecutar código en una consola de programación o incluso utilizar Jupyter. Frecuentemente, esto involucra una verificación manual de los resultados de lo que se está estudiando utilizando la sentencia print. Esto es fácil, natural y una forma válida de aprender nuevas técnicas.

Esta forma de trabajo, sin embargo, no se puede utilizar en el desarrollo de software profesional. El software profesional es usualmente complejo, dependiendo de lo bien diseñado que está el sistema, pueden existir partes del software que estén entrelazadas, así con la adición de una nueva funcionalidad existe la probabilidad de que otra, aparentemente no relacionada, se rompa. Resolver un error puede causar otro.

¿Cómo se asegura que una nueva funcionalidad está funcionando o que un error ha sido eliminado? Así también, ¿Cómo puede asegurarse de que, al arreglar o introducir una nueva funcionalidad, otra parte del sistema no se rompa?.

La respuesta es teniendo un sistema saludable de pruebas automatizadas, o banco de pruebas.

Un conjunto de pruebas, es código que realiza pruebas a su código. Usualmente, estos crean recursos necesarios y ejecutan las pruebas. Estas luego se aseguran que las pruebas funcionan como se espera. Además de ejecutarse en la máquina del desarrollador, en entornos de trabajo profesional, estas se ejecutan en forma continua, por ejemplo cada hora o cada commit del código. Esta ejecución continua se realiza mediante sistemas automatizados como Jenkins. Debido a esto, agregar una pieza de código de pruebas implica que esta se probará una y otra vez cada que una funcionalidad sea agregada o un error sea corregido.

Así, el tener un conjunto de pruebas bien escrito, te permitirá tener mayor confianza cuando realices un cambio, ya sea pequeño o grande.

¿Por que Pytest?

Pytest es un framework maduro y con muchas funcionalidades, desde pruebas pequeñas hasta pruebas de gran escala como pruebas funcionales de aplicaciones y librerías.

Pytest es simple para empezar. Para escribir una prueba no se requiere de clases, como con unittest. Se puede escribir una función que empiece con test y utilizar la sentencia assert que ya viene como parte de Python.

Con Pytest es más simple escribir pruebas, además tiene muchos comandos que incrementan la productividad, como por ejemplo el solo ejecutar las pruebas que están fallando, o ejecutar un conjunto específico de pruebas por el nombre.

Pytest viene con fixtures, el cual nos ayuda con el manejo de recursos. La creación de recursos es un aspecto que muchas veces es pasado por alto. Las pruebas de aplicaciones usualmente necesitan configuraciones complejas, como inicializar el uso de un recurso, registrar información en una base de datos o inicializar una interfaz de usuario. Con Pytest, el uso de estos recursos complejos puede ser manejado por fixtures.

La personalización es importante, y pytest tiene un sistema muy poderoso de plugins. Estos plugins o complementos pueden cambiar varios aspectos de las pruebas, desde cómo se ejecutan las pruebas hasta proporcionar nuevas capacidades para facilitar la prueba de muchos tipos de aplicaciones y frameworks. Existe un plugin que ejecuta las pruebas en forma aleatoria cada vez para asegurarse que estas pruebas no cambien el estado global que puedan afectar a otros test, plugins que muestran las fallas tal como aparecen en lugar de solo al final de la ejecución, y plugins que ejecutan pruebas en múltiples CPUs para acelerar los test. Actualmente hay más de 500 complementos para pytest.

Así mismo, pytest ejecuta las pruebas basadas en unittest y sin modificaciones, de esta forma se puede migrar su set de pruebas actuales en forma gradual de unittest a pytest.

Por estos motivos, muchos consideran pytest como la forma Pythonic de escribir pruebas en Python.

Si te gusto, comparte ...Email this to someone
email
Share on Facebook
Facebook
Tweet about this on Twitter
Twitter
Share on LinkedIn
Linkedin
Facebook