Café y Código

10. Proyecto final

TDD en pocas palabras

Test-Driven Development: escribís un test que falla (rojo), implementás lo mínimo para pasar (verde) y mejorás el diseño con la suite en verde (refactor). No es obligatorio en todos los equipos, pero entenderlo te ayuda a priorizar contratos claros.

Ejemplo mínimo
PYTHON
1 # 1) Test primero: falla hasta que exista la función
2 def test_password_minima_longitud():
3 assert es_password_segura("12345") is False # define es_password_segura después
4
5 # 2) Implementación mínima
6 def es_password_segura(pw: str) -> bool:
7 return len(pw) >= 8

Checklist de cierre

  • Tests rápidos y deterministas (mockear IO cuando el objetivo es lógica pura).
  • Nombres de test que expliquen el comportamiento esperado.
  • Mezcla de casos felices, bordes y errores esperados (raises).
  • Suite en CI para cada push o pull request.

Desafío integrador

Misión: Validador de rangos

Implementá en_rango(x, a, b) que devuelva True si a <= x <= b. Escribí al menos: un test parametrizado con varios valores, un test de pytest.raises si exigís a <= b (o documentá que asumís a <= b sin excepción) y un mock solo si inyectás una dependencia.

Ver posible enfoque (una de muchas)
ejemplo compacto
PYTHON
1 import pytest
2
3 def en_rango(x, a, b):
4 if a > b:
5 raise ValueError("a debe ser <= b")
6 return a <= x <= b
7
8 @pytest.mark.parametrize("x,a,b,ok", [(2, 1, 3, True), (0, 0, 0, True), (5, 1, 4, False)])
9 def test_casos(x, a, b, ok):
10 assert en_rango(x, a, b) is ok
11
12 def test_rango_invertido():
13 with pytest.raises(ValueError):
14 en_rango(1, 5, 2)

Examen final

Demostrá que dominás los conceptos del curso.

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