テクめも

プログラミング関連のちょっとしたTipsなどを書いています。

ArgumentParserをテストする

argparse を使うと簡単にCLIが作成できます。

そのままテストすることが少し難しかったので、調べた結果、parseするとことを別の関数に切り出して、その部分をテストするのが良さそうです。

# main.py
def main():
    args = parse_args(sys.argv[1:])

def parse_args(args):
    parser = argparse.ArgumentParser()
    parser.add_argument('--input')
    return parser.parse_args(args)
# test_main.py
def test_parser():
    args = parse_args(['--input', 'hoge'])

    assert args.input == 'hoge'

参考

unit testing - How do you write tests for the argparse portion of a python module? - Stack Overflow