[lang-ref] ( parse_positional_args ) ( python )

def test_parse_positional_args():
    import argparse
    parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)

    # positional args starts not with '-'
    parser.add_argument('PARAM1')
    parser.add_argument('PARAM2')

    # correct params
    args = parser.parse_args(['A', 'B'])
    assert args.PARAM1 == 'A'
    assert args.PARAM2 == 'B'

    # wrong params
    with pytest.raises(SystemExit) as e:
        parser.parse_args(['A']) # insufficient
    assert e.value.code == 2

    with pytest.raises(SystemExit) as e:
        parser.parse_args(['A', 'B', 'C']) # too much
    assert e.value.code == 2