Chciałbym ustawićJak ustawić sys.argv, aby można było przetestować urządzenie?
sys.argv
więc mogę testów jednostkowych przechodzącą w różnych kombinacjach. Poniższa nie działa:
#!/usr/bin/env python
import argparse, sys
def test_parse_args():
global sys.argv
sys.argv = ["prog", "-f", "/home/fenton/project/setup.py"]
setup = get_setup_file()
assert setup == "/home/fenton/project/setup.py"
def get_setup_file():
parser = argparse.ArgumentParser()
parser.add_argument('-f')
args = parser.parse_args()
return args.file
if __name__ == '__main__':
test_parse_args()
następnie uruchomić plik:
pscripts % ./test.py
File "./test.py", line 4
global sys.argv
^
SyntaxError: invalid syntax
pscripts %
Co o nim „nie działa”? –
Nie wywołałeś 'get_setup_file'. Nie potrzebujesz 'global sys.argv'. Potrzebujesz 'import sys'. –
Składnia '" ~/project/setup.py "' nie działa, ponieważ jest to powłoka, która [rozszerza tyldy] (http://www.gnu.org/software/bash/manual/bashref.html#Tilde- Ekspansja), a nie system operacyjny. Tę czynność musisz wykonać samodzielnie, np. 'os.path.join (os.getenv (" HOME ")," project/setup.py ")', aby uzyskać to, co chcesz. –