pytest tmp_path: Prueba Archivos sin Ensuciar el Proyecto resuelve un problema frecuente en proyectos Python: Crea un directorio exclusivo por prueba y úsalo como objeto pathlib.Path. Esta guía explica el mecanismo, presenta un ejemplo ejecutable y marca los límites que evitan una implementación frágil.

Concepto y caso de uso

tmp_path proporciona un Path temporal aislado. Evita colisiones globales, permite ejecución paralela y deja la limpieza a pytest.

Para repasar los fundamentos relacionados, consulta también la guía de pytest. La integración es más simple cuando cada función recibe dependencias y datos explícitamente en lugar de depender de estado global.

Ejemplo práctico

from pathlib import Path


def save_report(path: Path, rows: list[str]) -> None:
    path.write_text("\n".join(rows), encoding="utf-8")


def test_save_report(tmp_path: Path):
    output = tmp_path / "report.txt"
    save_report(output, ["alpha", "beta"])
    assert output.read_text(encoding="utf-8") == "alpha\nbeta"

Pasa la ruta a las funciones en lugar de descubrir una carpeta global. Crea solo los archivos necesarios y verifica contenido, encoding y estructura.

Decisiones importantes

La elección correcta depende del contrato público, del volumen y del comportamiento ante fallos.

Considera concurrencia, entradas vacías y fallos parciales. Documenta cada límite que afecte a consumidores y usa nombres que expresen intención.

Errores frecuentes

El ejemplo mínimo no sustituye límites, manejo de errores y observabilidad. Escribir en el repositorio deja residuos y crea dependencia del orden. Simular toda la API de archivos puede ocultar errores reales de integración.

Evita capturar excepciones sin contexto o devolver resultados parciales como si fueran completos. Un fallo explícito suele ser más seguro que datos silenciosamente incorrectos.

Cómo validar

Valida el comportamiento y no solo el camino feliz. Ejecuta repetidamente y en paralelo, usa nombres con espacios y caracteres no ASCII y prueba cuando falta un archivo.

La documentación oficial, consultada el 28 de julio de 2026, detalla la API y debe ser la referencia para cambios futuros.