Me gustaría ejecutar Pytest desde un script y guardar la salida como una cadena. Algo como:

   test_output=pytest.main(['-qq', '-x', test_dir])
   print(test_output)

Es posible? Sé que podría escribirlo en un archivo y luego leerlo, pero eso parece innecesariamente complicado.

0
David J. 15 abr. 2020 a las 11:54

2 respuestas

La mejor respuesta

Puedes usar contextlib.redirect_stdout:

import io
from contextlib import redirect_stdout
import pytest

if __name__ == "__main__":
    buffer = io.StringIO()
    with redirect_stdout(buffer):
        pytest.main()
    out = buffer.getvalue()
    print(out)
1
MrBean Bremen 15 abr. 2020 a las 09:51

Creo que si tienes un entorno virtual, la nube establece allí las variables de entorno. Entonces podrás leerlos y escribirlos. Pero crear un archivo es probablemente más fácil.
https://www.nylas.com/blog / making-use-of-environment-variables-in-python /

0
SebNik 15 abr. 2020 a las 08:58