EATRYL
Programación / Lección y práctica

Pruebas de funciones: elegir casos que revelen errores

Construir pruebas a partir del contrato y distinguir una prueba pasada de una demostración.

Preparatoria · Universidad15 min

Comprende la idea

Antes de empezar: Funciones, listas, condicionales y excepciones.

Una prueba compara un comportamiento observado con uno esperado. Para que sea útil, el esperado debe salir del contrato o de un razonamiento independiente, no de copiar la misma fórmula que podría estar mal en la implementación.

Una función con una decisión explícita

def media(datos):
    if len(datos) == 0:
        raise ValueError("Se necesita al menos un dato")
    return sum(datos) / len(datos)

assert media([2, 4, 6]) == 4
assert media([5]) == 5
assert media([-3, 3]) == 0

El contrato supone una colección de números compatibles con suma y división. Los casos cubren varios elementos, uno solo y cancelación de signos. No afirman que la función acepte cadenas ni cualquier objeto.

Probar el rechazo

try:
    media([])
except ValueError:
    pass
else:
    raise AssertionError("La lista vacía debía rechazarse")

Si no hay excepción, la prueba falla. Un bloque que capture cualquier error podría aceptar accidentalmente un fallo distinto; por eso comprobamos el tipo esperado.

Decimales aproximados

Para cálculos con punto flotante, algunas expresiones no coinciden exactamente con su representación decimal ideal. Puede ser apropiado usar una tolerancia absoluta y relativa con math.isclose, elegida según la escala y la precisión que exige el problema.

¿Pasar tres pruebas demuestra que no hay errores?

No. Es evidencia sobre esos casos. Amplía las pruebas cuando identifiques otra clase de entrada o un error concreto; repetir entradas casi idénticas puede aportar poco.

entrada + resultado esperado → comparación verificable

Vamos con un ejemplo

Resuelto paso a paso

Una media que divide siempre entre 3 pasa el caso [2,4,6], pero falla con [5]: daría 53 en lugar de 5. El caso de un elemento comprueba una decisión que el primero no distingue. Por eso importa la variedad conceptual de casos.

Conecta y aplica

Cuando corriges un error, guarda una prueba que lo reproduzca con una entrada pequeña. Después comprueba que esa prueba pasa y que las decisiones importantes que antes funcionaban siguen cubiertas.

Un detalle que importa: No uses igualdad aproximada para ocultar un error de unidades o una fórmula equivocada. La tolerancia debe justificar diferencias numéricas pequeñas, no aceptar cualquier resultado.

Ponlo a prueba

¿Qué caso detecta mejor una media que divide siempre entre 3?

Elige una respuesta para ver la explicación.

Clases en línea · Atención personalizada

¿Necesitas ayuda con este tema?

Trabájalo paso a paso con un profesor de EATRYL. Consulta disponibilidad y costo para reforzar Pruebas de funciones: elegir casos que revelen errores.

Consultar una clase sobre este tema
Python para un cálculo comprobable / 2 de 4Ver la ruta completa
Siguiente lección