viernes, 9 de agosto de 2019

Python: Pruebas y Unittest

En Python podemos ejecutar pruebas de código escribiéndolas dentro de los comentarios. Vamos a ver cómo.

Vamos a crear una función que calcule el área de un triángulo, pero con la particularidad de que, dentro de la función, vamos a parametrizar entre los comentarios dos pruebas, que vamos a ejecutar luego fuera de la función mediante la librería doctest. Aquí está el código:

# Importamos la librería doctest:
import doctest

# Creamos una función y la comentamos con una descripción y las pruebas:
def areaTriangulo(base, altura):

    """
    Calcula el área de un triángulo.
   
    >>> areaTriangulo(3,6)
    9.0
   
    >>> areaTriangulo(4,5)
    10.0
   
    """

    return (base * altura) / 2
   
# Lanzamos las pruebas:
doctest.testmod()


Como se puede ver, las pruebas las escribimos entre comillas de comentarios, por lo que no afectarán a nuestro código. Utilizamos el símbolo >>> para indicar que una línea de código es una prueba, y debajo debemos incluir el valor que queremos que de la prueba.

Si necesitamos lanzar pruebas complejas, de más de una línea de código, se añade >>> sobre cada línea de código, y ... sobre cada línea de código anidada. Por ejemplo:

>>> lista = []
>>> for i in [4, 9, 16]:
...     lista.append(i)
>>> raizCuadrada(lista)
[2.0, 3.0, 4.0]


También es posible realizar pruebas mediante la librería Unittest.
Añadimos este código al fichero:

# Importamos la librería unittest:
import unittest

# Creamos una clase para pruebas:
class Pruebas(unittest.TestCase):
    # Definimos las pruebas:
    def test(self):
        self.assertEqual(
areaTriangulo(3, 6), 9)
        self.assertEqual(
areaTriangulo(4, 5), 10)

# Con el siguiente código indicamos a Python que estamos ejecutando este fichero como programa principal y no como importación de otro:
if __name__ == '__main__':
    unittest.main()


Y eso es todo.

No hay comentarios:

Publicar un comentario