Pruebas unitarias en Python con GitHub Copilot
Clase 6 de 13 • Curso de GitHub Copilot
Resumen
¿Cómo aprovechar la inteligencia artificial para realizar pruebas unitarias?
La inteligencia artificial, y en particular los modelos de lenguaje como los LLM, están revolucionando el área de desarrollo de software al facilitarnos la creación de pruebas unitarias. Estas herramientas permiten testear código de manera eficiente, ahorrando tiempo y esfuerzo. En este artículo, exploraremos cómo implementar pruebas unitarias de forma efectiva utilizando inteligencia artificial.
¿Qué pasos seguir para probar funciones en Python?
Si tienes una función escrita en Python, como por ejemplo getTweets
, puedes usar inteligencia artificial para generar scripts de pruebas unitarias automáticamente. Aquí te mostramos cómo hacerlo:
-
Solicita a una herramienta AI generar un script: Puedes usar herramientas como Copilot para que generen scripts para tu función. Generalmente, basta con proporcionar el contexto de la función y su propósito.
-
Ejecución y ajuste de los test: Una vez que tienes el script, ejecútalo para comprobar las pruebas. Si el test falla porque, por ejemplo, la cantidad de tweets no coincide con un valor esperado, ajusta el script. Un buen ajuste puede ser comprobar que el número de resultados sea “menor o igual” al límite, en lugar de exactamente igual.
-
Revisión de resultados y tipos: Después de ejecutar los tests, verifica que los datos retornados cumplan con los requisitos: columnas correctas, tipos de datos adecuados, etc.
Ejemplo práctico: Función calcularMedia
Otro ejemplo es una función simple para calcular la media de una lista de números. Aquí, al generar los tests, puedes validar que el cálculo de la media sea correcto mediante listas aleatorias con resultados predefinidos.
def calcularMedia(numeros):
return sum(numeros) / len(numeros)
¿Cómo integrar herramientas como ChatGPT en el ciclo de testing?
También puedes usar ChatGPT para potenciar tus pruebas. Por ejemplo, importando librerías como scikit-learn
para crear datasets de pruebas y separarlos en conjuntos de entrenamiento y test:
-
Importa y estructura datos: Crea un dataset y usa una función para dividirlo en conjuntos de entrenamiento y prueba.
-
Implementación de librerías para pruebas unitarias: Utiliza librerías como
unittest
para asegurar que las divisiones de tus conjuntos cumplen con condiciones específicas (por ejemplo, proporciones esperadas). -
Ejecución y detección de errores: Ejecuta estos tests para validar si existen fallos, y ajusta los parámetros según sea necesario. La IA puede indicarte errores justo cuando las condiciones establecidas no se cumplen.
Código ejemplo usando unittest y scikit-learn
from sklearn.model_selection import train_test_split
import unittest
# Función para dividir un dataset
def dividir_dataset(X, test_size=0.2):
return train_test_split(X, test_size=test_size)
class TestDividirDataset(unittest.TestCase):
def test_tamanos_correctos(self):
X = [i for i in range(10)]
X_train, X_test = dividir_dataset(X, test_size=0.2)
self.assertEqual(len(X_train), 8)
self.assertEqual(len(X_test), 2)
if __name__ == '__main__':
unittest.main()
Desafíos adicionales
Como desafío, puedes aplicar estos conceptos y herramientas a un script que realice web scraping. Por ejemplo, examina el contenido descargado de TechCrunch en un DataFrame, y utiliza IA para generar pruebas unitarias automáticas que aseguren la calidad de tus procesos de limpieza y estructuración de datos. ¡Deja tus resultados y experiencias en los comentarios para motivar a otros desarrolladores!
Este enfoque no solo fortalece la robustez de tu código, sino que también te introduce en un ecosistema de desarrollo más moderno y ágil, ofreciendo además beneficios inmensos de aprendizaje y eficiencia.