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?