Утверждение исключения, вызывающее сбойPython

Программы на Python
Anonymous
Утверждение исключения, вызывающее сбой

Сообщение Anonymous »

У меня есть класс ArgumentParser:

Код: Выделить всё

from argparse import ArgumentParser

class ArgumentHandler:

def __init__(self):
self.parser = ArgumentParser()
self.parser.add_argument('--environment', help='Environment', choices=['TEST', 'DEV', 'PROD'], nargs=1, type=str.upper)
self.parser.add_argument('--asofdate', help='As of date', nargs=1)

def parse(self):
parsed = {}

args = dict(vars(self.parser.parse_args()))
...

return parsed
Я пытаюсь проверить это с помощью unittest:

Код: Выделить всё

def test_providing_incorrect_environment(self):
print(f"RUNNING TEST CASE {inspect.currentframe().f_code.co_name}")

app = sys.argv[0] if len(sys.argv) > 0 and sys.argv[0] is not None else __file__
sys.argv = [app, '--environment=UAT' ]

with self.assertRaises(ArgumentError):
ArgumentHandler().parse()
Но я получаю следующую ошибку:

Код: Выделить всё

argparse.ArgumentError: argument --environment: invalid choice: 'UAT' (choose from 'TEST', 'DEV', 'PROD')
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\SWDTOOLS\PYTHON39\lib\unittest\case.py", line 59, in testPartExecutor
yield
File "C:\SWDTOOLS\PYTHON39\lib\unittest\case.py", line 593, in run
self._callTestMethod(testMethod)
File "C:\SWDTOOLS\PYTHON39\lib\unittest\case.py", line 550, in _callTestMethod
method()
File "c:\ParisNmdProcessor\tests\components\helpers\test_argument_handler.py", line 57, in test_providing_incorrect_environment
ArgumentHandler().parse()
File "c:\ParisNmdProcessor\src\components\helpers\argument_handler.py", line 28, in parse
args = dict(vars(self.parser.parse_args()))
File "C:\SWDTOOLS\PYTHON39\lib\argparse.py", line 1818, in parse_args
args, argv = self.parse_known_args(args, namespace)
File "C:\SWDTOOLS\PYTHON39\lib\argparse.py", line 1854, in parse_known_args
self.error(str(err))
File "C:\SWDTOOLS\PYTHON39\lib\argparse.py", line 2575, in error
self.exit(2, _('%(prog)s: error: %(message)s\n') % args)
File "C:\SWDTOOLS\PYTHON39\lib\argparse.py", line 2562, in exit
_sys.exit(status)
SystemExit: 2
В чем может быть причина? И как это исправить?

Подробнее здесь: https://stackoverflow.com/questions/784 ... ng-failure

Вернуться в «Python»