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?