6. Parametrización
Un test, varios escenarios
@pytest.mark.parametrize evita copiar y pegar el mismo test con distintos valores.
1 import pytest
2
3 def doble(x: int) -> int:
4 return x * 2
5
6 @pytest.mark.parametrize("entrada,esperado", [(0, 0), (1, 2), (-3, -6)])
7 def test_doble(entrada, esperado):
8 assert doble(entrada) == esperado
IDs legibles
1 @pytest.mark.parametrize(
2 "n",
3 [1, 2, 10],
4 ids=["uno", "dos", "diez"],
5 )
6 def test_positivo(n):
7 assert n > 0
Ejercicio 1
Parametrizá un test para la función abs_valor(x) que devuelva el valor absoluto, con al menos tres pares (entrada, esperado).
Ver solución propuesta
1 import pytest
2
3 def abs_valor(x: float) -> float:
4 return x if x >= 0 else -x
5
6 @pytest.mark.parametrize("x,e", [(0, 0), (5, 5), (-4, 4)])
7 def test_abs_valor(x, e):
8 assert abs_valor(x) == e
Ejercicio 2
Explicá en una frase por qué parametrizar reduce duplicación sin perder claridad.
Ver idea guía
Centralizás la lógica del assert y solo variás los datos; la tabla de casos documenta los escenarios de un vistazo.
Ponte a prueba
Pon a prueba tu lógica de testing. Son 5 preguntas.