Café y Código

6. Parametrización

Un test, varios escenarios

@pytest.mark.parametrize evita copiar y pegar el mismo test con distintos valores.

test_doble.py
PYTHON
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

ids en la salida
PYTHON
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
PYTHON
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

Ko-fi
Donaciones
Apoyá cafeycodigo con un café en Ko-fi. Colaboradores: insignia, muro y zona exclusiva.