Verwenden Sie das Python-Unterprozessmodul wie einen Befehlszeilensimulator

Ich schreibe ein Testframework in Python für eine Befehlszeilenanwendung. Die Anwendung erstellt Verzeichnisse, ruft andere Shell-Skripte im aktuellen Verzeichnis auf und gibt sie auf dem Stdout aus.

Ich versuche, die Kombination {Python-SubProcess, CommandLine} als äquivalent zu {Selenium, Browser} zu behandeln. Die erste KomponenteTheaterstücke etwas auf der zweiten undprüft wenn die Ausgabe erwartet wird. Ich stehe vor folgenden Problemen

Das Popen-Konstrukt nimmt einen Befehl entgegen und kehrt zurück, nachdem dieser Befehl ausgeführt wurde. Was ich möchte, ist ein Live-Handle für den Prozess, damit ich weitere Befehle und Überprüfungen ausführen und die Shell schließen kann, sobald dies abgeschlossen istIch bin damit einverstanden, etwas Infrastrukturcode zu schreiben, um dies zu erreichen, da wir viele Befehlszeilenanwendungen haben, die so getestet werden müssen.

Hier ist ein Beispielcode, den ich ausführe

 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 

aber der Prozess hängt oder kann sein, dass ich etwas falsch mache. Wie "greife" ich die Ausgabe dieses Unterprozesses, damit ich kann?behaupten Gibt es etwas?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage