Użyj modułu podprocesu Pythona, takiego jak symulator linii poleceń

Piszę framework testowy w Pythonie dla aplikacji wiersza poleceń. Aplikacja utworzy katalogi, wywoła inne skrypty powłoki w bieżącym katalogu i wyśle ​​na standardowe wyjście.

Próbuję traktować combo {Python-SubProcess, CommandLine} jako równoważne {Selenium, Browser}. Pierwszy komponentgra coś na drugim iczeki jeśli oczekiwane jest wyjście. Stoję przed następującymi problemami

Konstrukcja Popen przyjmuje polecenie i powraca po zakończeniu tego polecenia. Chcę, aby proces był obsługiwany na żywo, dzięki czemu mogę uruchamiać kolejne polecenia + weryfikacje, a na koniec zamknąć powłokęMogę napisać trochę kodu infrastruktury dla osiągnięcia tego celu, ponieważ mamy wiele aplikacji wiersza poleceń, które wymagają takiego testowania.

Oto przykładowy kod, który używam

 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 

ale proces się zawiesza lub może robię coś złego. W jaki sposób mogę „wydobyć” dane wyjściowe tego podprocesu, tak mogęzapewniać że coś istnieje?

questionAnswers(2)

yourAnswerToTheQuestion