Próbuję debugować interfejs CLI w języku Python, który napisałem, który może wziąć swoje argumenty ze standardowego wejścia. Prosty sprawdzian miałoby wyjścieJak debugować Pythona CLI, który przyjmuje stdin?
echo "test" | python mytool.py
równoznaczne z wyjściem
python mytool.py test
chciałbym debugować kilka problemów z tym narzędziem, więc próbowałem uruchomić to:
echo "test" | pdb mytool.py
Ale mam to wyjście, a następnie wyjść pdb:
> /path/to/mytool.py(5)<module>()
-> '''
(Pdb) *** NameError: name 'test' is not defined
(Pdb)
To samo dzieje się, gdy dodaję -m python
do shebangu, a jeśli uruchomię pdb.set_trace()
w skrypcie.
Co tu się dzieje?
Czy możesz zmienić skrypt, aby akceptował dane wejściowe z pliku innego niż stdin? – nmichaels
możliwy duplikat testowania jednostki programowej Python CLI (http://stackoverflow.com/questions/13493288/python-cli-program-unit-testing) –
@ user1901786 Jak uzyskać dostęp do wejścia standardowego w skrypcie CLI? Używając 'sys.stdin'? Czy chcesz napisać test na ten temat, czy też musisz uruchomić debugger w skrypcie? Jeśli potrzebujesz debuggera, w którym momencie chcesz go zaangażować? Niestety, pytanie jest dla mnie nieco niejasne. – famousgarkin