Módulo 6: Mocking, Fixtures y Validation Loops

Módulo 6: Mocking, Fixtures y Validation Loops

Módulo 6: Mocking, Fixtures y Validation Loops

Descripción de la cápsula

Hay código que no puedes testear directamente. Tu función llama a la API de OpenAI — ¿necesitas hacer una llamada real en cada test? Tu endpoint escribe en PostgreSQL — ¿necesitas un servidor de base de datos corriendo? Tu servicio envía emails — ¿van a llegar emails reales cada vez que ejecutas pytest?

La respuesta es mocking: reemplazar dependencias externas con versiones controladas que simulan el comportamiento real. Un mock de la API de OpenAI retorna una respuesta predefinida en microsegundos. Un mock de la database simula inserts y queries sin disco. Los tests se vuelven rápidos, deterministas, y baratos.

Pero mocking es solo una parte del módulo. También dominarás fixtures avanzadas (scope, factories, conftest.py profesional) y validation loops — el ciclo automático donde Claude Code ejecuta tests, detecta fallos, corrige código, y re-ejecuta. Los validation loops son el superpoder que hace agentic TDD realmente automático.


Contexto del Módulo

¿Dónde estamos?

Este es el Módulo 6 — último de Phase 2 (Workflows de Testing).

Lo que ya sabes:

  • ✅ TDD workflow completo: red-green-refactor (Módulo 4)
  • ✅ Coverage, edge cases, property testing (Módulo 5)
  • ✅ Unit, integration, E2E tests (Phase 1)

Lo que falta: Testear código con dependencias externas y automatizar el ciclo de corrección con Claude Code.

¿Hacia dónde vamos?

Phase 1: Fundamentos TDD con AI ✅

Phase 2: Workflows de Testing
├── Módulo 4: ✅ TDD workflow completo
├── Módulo 5: ✅ Coverage y edge cases
└── Módulo 6: ← ESTÁS AQUÍ — Mocking, fixtures, validation loops

Phase 3: Proyecto Final
├── Módulo 7: → Estrategia de testing profesional
└── Módulo 8: → Proyecto integrador

Este módulo cierra Phase 2. Con mocking y validation loops, tienes todas las herramientas para Phase 3.


Objetivo Profesional

Dominar mocking para testear código con dependencias externas, organizar fixtures profesionalmente, y usar validation loops para automatizar el ciclo de corrección con Claude Code.

Al final de este módulo podrás:

  • ✅ Usar unittest.mock y pytest-mock para reemplazar APIs, databases, filesystem
  • ✅ Decidir cuándo mockear: servicios externos (sí), lógica interna (no), boundaries (depende)
  • ✅ Crear fixtures avanzadas: scope, autouse, factories, conftest.py por directorio
  • ✅ Generar mocks realistas con Claude Code
  • ✅ Implementar validation loops: test→fallo→corrección→re-test automático
  • ✅ Usar factory patterns para datos de test variados y realistas

Progresión del Módulo

Mapa del Módulo

CápsulaTemaQué aprenderás
02Mocking fundamentalsunittest.mock, Mock, MagicMock, patch, return_value, side_effect
03pytest fixtures avanzadasscope, autouse, factories, conftest.py profesional, fixture composition
04Validation loops con Claude CodeCiclo automático test→fix→re-test, prompts para validation, cuándo intervenir
05Mocking servicios externosMockear APIs HTTP, databases, filesystem, time, environment variables
06Proyecto: Validation pipelinePipeline con mocks de OpenAI y DB, fixtures, validation loops completos

Flujo de aprendizaje

Primero dominarás la técnica base de mocking (cápsula 02): Mock, MagicMock, patch, return_value, side_effect. Esto es la herramienta fundamental.

Luego profundizarás en fixtures avanzadas (cápsula 03): scope, factories, conftest.py profesional. Fixtures bien organizadas son la diferencia entre tests mantenibles y tests que nadie quiere tocar.

La cápsula 04 introduce los validation loops: el ciclo automático donde Claude Code usa test output como feedback para iterar. Esto es el superpoder de agentic TDD.

En la cápsula 05 aplicarás mocking a servicios reales: APIs HTTP, databases, filesystem, time. Escenarios prácticos que encontrarás en cualquier proyecto profesional.

El proyecto (cápsula 06) integra todo: un pipeline con mocks para servicios externos, fixtures para datos de test, y validation loops automáticos.


Conexión con Proyecto

Proyecto de este módulo: Validation pipeline

Construirás un pipeline de procesamiento que depende de servicios externos (API de AI, database) y crearás una test suite completa con:

  • Mocks para cada servicio externo
  • Fixtures organizadas en conftest.py por scope
  • Factory patterns para datos de test
  • Al menos 1 validation loop completo con Claude Code

Conexión con proyecto final (Módulo 8)

El proyecto final necesita mocks para servicios externos, fixtures reutilizables, y tests deterministas. Todo lo que construyes aquí se replica directamente. Los validation loops acelerarán tu desarrollo en el proyecto final.


Límites: Qué NO Se Hará en Este Módulo

  • ❌ CI/CD integration — Se introduce en Módulo 7
  • ❌ Docker/containers para testing — Fuera del scope
  • ❌ Testing de microservicios — El foco es mocking local, no orquestación
  • ❌ Mocking avanzado de concurrencia — Threads/async mocking es tema avanzado

Evidencia de Éxito

Al terminar este módulo, sabrás que tuviste éxito si:

  • ✅ Puedes mockear una API externa y verificar que tu código la usa correctamente
  • ✅ Puedes explicar cuándo mockear y cuándo no (con heurísticas claras)
  • ✅ Puedes organizar fixtures en conftest.py por scope y directorio
  • ✅ Puedes ejecutar un validation loop con Claude Code (test→fix→re-test)
  • ✅ Completaste el proyecto: pipeline con mocks, fixtures, y validation loops

Resumen

  • ✅ Mocking reemplaza dependencias externas con versiones controladas
  • ✅ La decisión de cuándo mockear requiere juicio: servicios externos sí, lógica interna no
  • ✅ Fixtures avanzadas (scope, factories, conftest.py) hacen tests mantenibles
  • ✅ Validation loops automatizan el ciclo test→fix→re-test con Claude Code
  • ✅ Este módulo cierra Phase 2 — tienes todas las herramientas para el proyecto final

Próxima cápsula: Mocking Fundamentals — Mock, MagicMock, patch, y la técnica base.


Recursos Adicionales

  1. unittest.mock Documentation - Referencia oficial de mocking
  2. pytest-mock - Plugin de pytest para mocking
  3. pytest Fixtures - Fixtures avanzadas
  4. Martin Fowler: Mocks Aren't Stubs - Diferencias conceptuales
  5. Factory Boy - Factory patterns para testing

Módulo 6 — Testing with Claude Code Guide De dependencias externas a tests deterministas