I have this ArgumentParser class:
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
I’m trying to test it using 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()
But I’m getting this error:
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:SWDTOOLSPYTHON39libunittestcase.py", line 59, in testPartExecutor
yield
File "C:SWDTOOLSPYTHON39libunittestcase.py", line 593, in run
self._callTestMethod(testMethod)
File "C:SWDTOOLSPYTHON39libunittestcase.py", line 550, in _callTestMethod
method()
File "c:ParisNmdProcessortestscomponentshelperstest_argument_handler.py", line 57, in test_providing_incorrect_environment
ArgumentHandler().parse()
File "c:ParisNmdProcessorsrccomponentshelpersargument_handler.py", line 28, in parse
args = dict(vars(self.parser.parse_args()))
File "C:SWDTOOLSPYTHON39libargparse.py", line 1818, in parse_args
args, argv = self.parse_known_args(args, namespace)
File "C:SWDTOOLSPYTHON39libargparse.py", line 1854, in parse_known_args
self.error(str(err))
File "C:SWDTOOLSPYTHON39libargparse.py", line 2575, in error
self.exit(2, _('%(prog)s: error: %(message)sn') % args)
File "C:SWDTOOLSPYTHON39libargparse.py", line 2562, in exit
_sys.exit(status)
SystemExit: 2