Mocking con unittest.mock: Mock, MagicMock y patch
Cómo reemplazar dependencias externas en tests de Python usando Mock, MagicMock y patch, con verificación de llamadas y errores comunes.
Cómo reemplazar dependencias externas en tests de Python usando Mock, MagicMock y patch, con verificación de llamadas y errores comunes.
Cómo usar fixtures con scope, parametrize y conftest.py para construir suites de test mantenibles en pytest.
Procesa respuestas HTTP grandes en chunks con requests e httpx async, y maneja comunicación bidireccional con WebSockets usando la librería websockets.
Uso de `httpx.Client` y `AsyncClient` con timeouts estructurados, streaming y multiplexación HTTP/2 en una sola librería.
Uso idiomático de requests para HTTP en Python: Session, timeout obligatorio, raise_for_status, retry con backoff y manejo correcto de respuestas binarias y JSON.
Criterios concretos para decidir si asyncio resuelve tu problema o lo complica, con foco en I/O-bound vs CPU-bound y el efecto de propagación async.
Por qué time.sleep y requests.get congelan el event loop entero, y cómo usar asyncio.to_thread o run_in_executor para evitarlo.
Cómo implementar `__aenter__`/`__aexit__`, async generators y `async for` para gestionar recursos y streams sin bloquear el event loop.
Cómo ejecutar múltiples corrutinas en paralelo con gather, TaskGroup y wait_for, y cuándo elegir cada herramienta.
Qué devuelve realmente una coroutine function, cómo await transfiere el control al event loop, y por qué la infección asíncrona es inevitable.