Ir al contenido principal

Desarrollo guiado por pruebas en Python: guía para principiantes

Sumérgete en el desarrollo guiado por pruebas (TDD) con nuestro completo tutorial de Python. Aprende a escribir pruebas sólidas antes de programar con ejemplos prácticos.
Actualizado 17 sept 2026  · 7 min leer

Explorar con IA

ChatGPTClaudePerplexity

Probar te da la confianza de que tu código hace lo que esperas. En este tutorial, aprenderemos los conceptos básicos del desarrollo guiado por pruebas (TDD) con Python. Para empezar, veremos algo de contexto sobre qué es el TDD y por qué escribir primero las pruebas ayuda al programar. Adoptaremos un enfoque de pruebas primero: escribiremos casos de prueba que fallen para la funcionalidad que queremos implementar antes de escribir las funciones reales.

Requisitos previos del tutorial

Para seguir este tutorial, necesitas conocimientos básicos de Python; si quieres refrescarlos, puedes echar un vistazo a este curso: Introduction to Python for Developers.

Un enfoque de pruebas primero nos permitirá pensar en el comportamiento deseado y las salidas esperadas. Puedes usar varias librerías para probar en Python, como pytest y unnitest. Sin embargo, por ahora nos centraremos en cómo escribir casos de prueba sencillos usando Python nativo que validen que la funcionalidad deseada produce la salida esperada.

Empezaremos con un caso de prueba simple e iremos ampliando los casos de forma incremental para cubrir distintos escenarios. A medida que ampliemos las pruebas, puede que encontremos errores o lagunas en nuestra lógica inicial que debamos mejorar. Este proceso de escribir iterativamente pruebas más avanzadas, verlas fallar y volver a mejorar la implementación está en el corazón del desarrollo guiado por pruebas con Python.

Para este tutorial, usaremos DataLab, el cuaderno de datos en la nube de DataCamp que te permite escribir y ejecutar código Python sin instalar nada en local. ¡Vamos a ello!

Primeros pasos con DataLab

Antes de ponernos con el desarrollo guiado por pruebas, necesitamos explorar DataLab y entender cómo usarlo para que nos ayude en el aprendizaje. Si abres DataLab, verás que tienes muchas opciones. De momento, nos centraremos en escribir Python en DataLab.

image5.png

Si seleccionas Python, el cuaderno abrirá una celda de código para que escribas. Se verá algo así:

image4.png

Aquí tienes varias opciones útiles. Por ejemplo, puedes ejecutar la celda para ver la salida, añadir comentarios o notas para apoyar tu aprendizaje y usar IA para empezar o desbloquearte. También puedes añadir o eliminar tantas celdas como necesites. Nos centraremos en ejecutar la celda con la opción "Run". Como ves en el código de abajo, cualquier salida que produzca tu código aparece debajo cuando ejecutas la celda.

Un apunte rápido: si has usado varias celdas y has definido una variable en una pero intentas acceder a ella desde otra, tienes que ejecutar cada celda por separado o ejecutar todo el cuaderno (desde el botón "Run" en la esquina superior derecha del cuaderno).

image7.png

Ahora que ya controlas lo básico de DataLab, empecemos con el desarrollo guiado por pruebas.

Desarrollo guiado por pruebas

El desarrollo guiado por pruebas consiste en escribir pruebas para tu código antes de escribir el código. Para explicar el TDD, empecemos con un ejemplo sencillo que implica escribir un script en Python para sumar números. Sin embargo, antes de escribir la función, escribiremos una prueba para comprobar si 1 + 1 es igual a 2. Puedes hacerlo con Python nativo, como se muestra abajo.

assert 1 + 1 == 2

La palabra clave assert en Python se usa para escribir casos de prueba y confirmar que las condiciones del programa se evalúan como True. Te permite validar el comportamiento y las salidas de tu código. Cuando una sentencia assert falla, lanza un AssertionError, señalando un problema en el código. En tu cuaderno de DataLab se vería así:

image1.png

Ejemplo 1: probar una función simple

Empecemos con la función de prueba. Para empezar, abre un archivo de Python en DataLab. El desarrollo guiado por pruebas implica escribir primero una prueba que falle. Así que vamos a escribir una prueba fallida llamando a la función add(), que todavía no está definida.

assert add(1, 1) == 2

Esto dará lugar a un NameError, que indica que no existe implementación, conocido como el paso "rojo". Obtienes un NameError cuando intentas llamar a una función o variable que no se ha definido.

image3.png

Ahora toca implementar la función. Podemos hacerlo definiéndola así:

def add(num1, num2):
    return

Hemos definido nuestra función add, que recibe dos parámetros, num1 y num2. De momento, nuestra función no devuelve nada. ¡Veamos si nuestra implementación pasa las pruebas!

image6.png

Ya no vemos un NameError. Sin embargo, al ejecutar la celda ¡sigue apareciendo un error! Esta vez es un AssertionError. ¡Así que la prueba sigue fallando! ¿Por qué puede estar ocurriendo? Porque hemos definido una función que aún no devuelve nada.

Al ejecutar la prueba, obtenemos un AssertionError porque 1 + 1 no es igual a 2 con nuestra implementación vacía. Por fin podemos hacer que pase implementando correctamente la lógica en la función.

image9.png

Verás el punto verde en la esquina de la celda. Indica que tu código es válido y ha pasado al ejecutar la celda. Antes, verías el punto rojo con un error de ejecución y el tipo de error debajo de la celda. Esta función es muy útil para depurar tu código en DataLab.

Ya has escrito tu primera prueba en Python usando desarrollo guiado por pruebas. ¡Buen trabajo! Ahora pasaremos a ampliar nuestras pruebas y a pensar en cómo detectar posibles errores que hagan que la función falle o no produzca la salida esperada.

Ejemplo 2: múltiples casos de prueba

Probar con un solo valor de entrada suele no descubrir errores potenciales. Los bugs pueden esconderse con facilidad, sobre todo si tu función depende de entradas variables del usuario o de lógica externa. Entonces, ¿cómo probamos a fondo una función con múltiples valores?

Por ejemplo, ¿qué pasa si se pasa un tipo de dato incorrecto a la función? Podrías usar frameworks de pruebas de Python, pero vamos a usar Python básico. Primero, definiré una lista de diccionarios de entrada para simular distintos escenarios de uso:

test_cases = [
    {"num1": 1, "num2": 3, "expected": 4},
    {"num1": 1, "num2": "invalid", "expected": "Error: num2 must be a number"}, 
    {"num1": [1,2,3], "num2": 2, "expected": "Error: num1 must be a number"},
    {"num1": -1, "num2": 1, "expected": 0},
    {"num1": 3.5, "num2": 2.5, "expected": 6.0}, 
    {"num1": 100, "num2": 200, "expected": 300}
]

El código anterior muestra entradas para la función junto con las salidas esperadas. Sin embargo, debemos actualizar nuestra prueba para iterar por estos casos. Podemos validar cada diccionario de la lista anidando el assert dentro de un bucle for.

for test in test_cases:
    assert add(test["num1"], test["num2"]) == test["expected"]

Dado que la función no ha cambiado, ¿esperamos que esta prueba pase o falle? ¿Y qué error podría producirse?

image8.png

La prueba lanza un TypeError porque no hemos gestionado entradas que no sean números; ¿y si se pasa una cadena o un booleano en lugar de un int? ¡Podemos actualizar la función para capturar estos casos! Podemos devolver un mensaje personalizado en tipos no válidos comprobando que la variable de entrada sea un entero o un float.

def add(num1, num2):
    if type(num1) is not int and type(num1) is not float:
        return "Error: num1 must be a number"
    elif type(num2) is not int and type(num2) is not float:
        return "Error: num2 must be a number"
    else:
        return num1 + num2

Al volver a ejecutar las pruebas, ya no obtenemos errores, así que las pruebas han pasado. Ahora vemos el círculo verde que indica que hemos implementado pruebas que pasan. ¡Bien hecho!

image2.png

Reflexiones finales

En este tutorial, hemos cubierto los fundamentos del desarrollo guiado por pruebas en Python usando DataLab. DataLab ofrece un IDE en la nube que te permite escribir y ejecutar código Python sin instalaciones locales. Las pruebas validan el comportamiento del código y detectan errores pronto. Las sentencias assert comprueban condiciones y lanzan excepciones cuando fallan.

¡Puedes explorar más casos de prueba y empezar a escribir tus propias pruebas en DataLab! Si quieres aprender más sobre pruebas en Python, echa un vistazo a nuestro curso de DataCamp - Introduction to Testing in Python.


Amina Edmunds's photo
Author
Amina Edmunds
LinkedIn

Amina es becaria de desarrollo de contenidos en Datacamp. Con formación en Arquitectura y Educación, cambió de carrera para dedicarse al desarrollo de software, empezando con JavaScript; ahora está centrada en Python.

Temas
Python

¡Empieza hoy tu camino en testing!

Curso

Introducción a las pruebas en Python

4 h
26.3K
Domina las pruebas en Python: aprende métodos, crea comprobaciones y garantiza un código sin errores con pytest y unittest.
Ver detallesRight Arrow
Iniciar Curso
Ver másRight Arrow
Relacionado

blog

Cómo aprender Python desde cero en 2026: Una guía experta

Descubre cómo aprender Python en 2026, sus aplicaciones y la demanda de conocimientos de Python. Comienza hoy mismo tu aventura con Python. ​con nuestra guía completa.
Matt Crabtree's photo

Matt Crabtree

15 min

Tutorial

Desarrollo backend con Python: guía completa para principiantes

Esta guía completa te enseña los fundamentos del backend con Python. Aprende conceptos básicos, frameworks y buenas prácticas para empezar a crear aplicaciones web.
Oluseye Jeremiah's photo

Oluseye Jeremiah

15 min

Tutorial

Configurar VSCode para Python: Guía completa

Experimenta una forma sencilla, divertida y productiva de desarrollar en Python conociendo VSCode y sus extensiones y funciones.
Abid Ali Awan's photo

Abid Ali Awan

13 min

Machine Learning Jobs Header

Tutorial

Cómo utilizar Pytest para pruebas unitarias

Explore qué es Pytest y para qué se utiliza mientras lo compara con otros métodos de prueba de software.
Kurtis Pykes 's photo

Kurtis Pykes

13 min

Tutorial

Una Introducción al Subproceso Python: Conceptos básicos y ejemplos

Explora nuestra guía paso a paso para ejecutar comandos externos utilizando el módulo de subprocesos de Python, completa con ejemplos.
Moez Ali's photo

Moez Ali

15 min

Tutorial

Hola mundo en Python: Guía para principiantes sobre programación

Aprende los fundamentos de Python ejecutando el programa print(«Hola mundo»).
Adel Nehme's photo

Adel Nehme

3 min

Ver MásVer Más