python, unittest: is there a way to pass command line options to the app

后端 未结 5 977
余生分开走
余生分开走 2020-12-04 14:22

I have a module that imports unittest and has some TestCases. I would like to accept some command line options (for example below, the name of a data file), but when I try t

5条回答
  •  清歌不尽
    2020-12-04 14:43

    Building on Alex's answer, it's actually pretty easy to do using argparse:

    if __name__ == '__main__':
        parser = argparse.ArgumentParser()
        parser.add_argument('--input', default='My Input')
        parser.add_argument('filename', default='some_file.txt')
        parser.add_argument('unittest_args', nargs='*')
    
        args = parser.parse_args()
        # TODO: Go do something with args.input and args.filename
    
        # Now set the sys.argv to the unittest_args (leaving sys.argv[0] alone)
        sys.argv[1:] = args.unittest_args
        unittest.main()
    

    I haven't tested all of the flags you can pass into unittest to see if they work or not, but passing test names in does work, e.g.:

    python test.py --input=foo data.txt MyTest
    

    Runs MyTest with foo and data.txt.

提交回复
热议问题