Las pruebas son una parte fundamental del desarrollo de software. Aseguran que el código funcione como se espera y ayudan a identificar errores antes de que lleguen a producción. En este tema, aprenderemos los conceptos básicos de las pruebas en Python, incluyendo los diferentes tipos de pruebas y las herramientas disponibles para realizarlas.

Objetivos de Aprendizaje

Al final de esta sección, deberías ser capaz de:

  • Comprender la importancia de las pruebas en el desarrollo de software.
  • Conocer los diferentes tipos de pruebas.
  • Familiarizarte con las herramientas de pruebas en Python.
  • Escribir y ejecutar pruebas básicas.

Conceptos Clave

¿Por qué son importantes las pruebas?

  1. Calidad del Software: Las pruebas ayudan a asegurar que el software cumple con los requisitos y funciona correctamente.
  2. Detección de Errores: Identifican errores y problemas antes de que el software llegue a los usuarios finales.
  3. Mantenimiento: Facilitan el mantenimiento del código al permitir que los desarrolladores realicen cambios con confianza.
  4. Documentación: Las pruebas pueden servir como documentación adicional del comportamiento esperado del software.

Tipos de Pruebas

  1. Pruebas Unitarias: Verifican el funcionamiento de componentes individuales del código, como funciones o métodos.
  2. Pruebas de Integración: Aseguran que diferentes módulos o servicios del sistema funcionen juntos correctamente.
  3. Pruebas Funcionales: Validan que el software cumpla con los requisitos funcionales especificados.
  4. Pruebas de Sistema: Evalúan el sistema completo para asegurarse de que cumple con los requisitos.
  5. Pruebas de Aceptación: Realizadas por el cliente o usuario final para verificar que el sistema cumple con sus expectativas.
  6. Pruebas de Regresión: Aseguran que los cambios recientes no hayan introducido nuevos errores en el software.

Herramientas de Pruebas en Python

Python ofrece varias bibliotecas y herramientas para realizar pruebas. Algunas de las más populares son:

  • unittest: Biblioteca estándar de Python para pruebas unitarias.
  • pytest: Herramienta de pruebas más avanzada y flexible que unittest.
  • nose2: Extensión de unittest que facilita la escritura de pruebas.

Ejemplo Práctico: Pruebas Unitarias con unittest

Configuración del Entorno

Antes de comenzar, asegúrate de tener Python instalado en tu sistema. Puedes verificarlo ejecutando python --version en tu terminal.

Escribiendo una Prueba Unitaria

Vamos a escribir una prueba unitaria simple para una función que suma dos números.

Paso 1: Crear la Función a Probar

# archivo: calculator.py

def add(a, b):
    return a + b

Paso 2: Escribir la Prueba Unitaria

# archivo: test_calculator.py
import unittest
from calculator import add

class TestCalculator(unittest.TestCase):

    def test_add(self):
        self.assertEqual(add(2, 3), 5)
        self.assertEqual(add(-1, 1), 0)
        self.assertEqual(add(-1, -1), -2)

if __name__ == '__main__':
    unittest.main()

Paso 3: Ejecutar la Prueba

Para ejecutar la prueba, abre una terminal y navega al directorio donde se encuentran los archivos calculator.py y test_calculator.py. Luego, ejecuta el siguiente comando:

python test_calculator.py

Deberías ver una salida similar a la siguiente si todas las pruebas pasan:

...
----------------------------------------------------------------------
Ran 1 test in 0.001s

OK

Ejercicio Práctico

Ejercicio 1: Escribir Pruebas para una Función de Multiplicación

  1. Crea una función multiply(a, b) en un archivo llamado calculator.py que multiplique dos números.
  2. Escribe una prueba unitaria para la función multiply en un archivo llamado test_calculator.py.
  3. Asegúrate de probar diferentes casos, incluyendo números positivos, negativos y cero.

Solución

# archivo: calculator.py

def multiply(a, b):
    return a * b
# archivo: test_calculator.py
import unittest
from calculator import multiply

class TestCalculator(unittest.TestCase):

    def test_multiply(self):
        self.assertEqual(multiply(2, 3), 6)
        self.assertEqual(multiply(-1, 1), -1)
        self.assertEqual(multiply(-1, -1), 1)
        self.assertEqual(multiply(0, 5), 0)

if __name__ == '__main__':
    unittest.main()

Conclusión

En esta sección, hemos introducido los conceptos básicos de las pruebas en Python. Aprendimos sobre la importancia de las pruebas, los diferentes tipos de pruebas y cómo escribir pruebas unitarias utilizando la biblioteca unittest. En la próxima sección, profundizaremos en las pruebas unitarias con unittest y exploraremos herramientas más avanzadas como pytest.

Curso de Programación en Python

Módulo 1: Introducción a Python

Módulo 2: Estructuras de Control

Módulo 3: Funciones y Módulos

Módulo 4: Estructuras de Datos

Módulo 5: Programación Orientada a Objetos

Módulo 6: Manejo de Archivos

Módulo 7: Manejo de Errores y Excepciones

Módulo 8: Temas Avanzados

Módulo 9: Pruebas y Depuración

Módulo 10: Desarrollo Web con Python

Módulo 11: Ciencia de Datos con Python

Módulo 12: Proyecto Final

© Copyright 2024. Todos los derechos reservados