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