Use el módulo de subproceso de Python como un simulador de línea de comandos

Estoy escribiendo un marco de prueba en Python para una aplicación de línea de comandos. La aplicación creará directorios, llamará a otros scripts de shell en el directorio actual y saldrá en el Stdout.

Estoy intentando tratar el combo {Python-SubProcess, CommandLine} como equivalente a {Selenium, Browser}. El primer componenteobras de teatro algo en el segundo ycheques Si se espera la salida. Estoy enfrentando los siguientes problemas.

La construcción de Popen toma un comando y regresa después de que se completa ese comando. Lo que quiero es un manejo directo del proceso para que pueda ejecutar más comandos + verificaciones y finalmente cerrar el shell una vez hechoEstoy de acuerdo con escribir algún código de infraestructura para lograr esto, ya que tenemos muchas aplicaciones de línea de comandos que necesitan pruebas como esta.

Aquí hay un código de ejemplo que estoy ejecutando

 p = subprocess.Popen("/bin/bash", cwd = test_dir)
 p.communicate(input = "hostname") --> I expect the hostname to be printed out
 p.communicate(input = "time") --> I expect current time to be printed out 

Pero el proceso se cuelga o puede ser que estoy haciendo algo mal. También, ¿cómo puedo "agarrar" la salida de ese subproceso para que puedaafirmar que algo existe?

Respuestas a la pregunta(2)

Su respuesta a la pregunta