objectif
Capturer les impressions d’un bloc dans un buffer pour test/log.
code minimal
import io, contextlib
buf = io.StringIO()
with contextlib.redirect_stdout(buf):
print("hello")
print(buf.getvalue().strip() == "hello") # attendu: True
utilisation
import io, contextlib, sys
err = io.StringIO()
with contextlib.redirect_stderr(err):
print("x", file=sys.stderr)
print("x" in err.getvalue())
variante(s) utile(s)
import io, contextlib
out = io.StringIO()
with contextlib.redirect_stdout(out):
print(1); print(2)
print(out.getvalue().count("\n") == 2)
notes
- Idéal pour tester des CLI sans toucher à sys.stdout globalement.
- Pensez à réinitialiser/fermer vos buffers si volumineux.