Python CLI program unit testing

后端 未结 9 2211
日久生厌
日久生厌 2020-12-24 12:43

I am working on a python Command-Line-Interface program, and I find it boring when doing testings, for example, here is the help information of the program:

         


        
9条回答
  •  盖世英雄少女心
    2020-12-24 13:36

    So my question is, what is the best way to do testing with CLI program, can it be as easy as unit testing with normal python scripts?

    The only difference is that when you run Python module as a script, its __name__ attribute is set to '__main__'. So generally, if you intend to run your script from command line it should have following form:

    import sys
    
    # function and class definitions, etc.
    # ...
    def foo(arg):
        pass
    
    def main():
        """Entry point to the script"""
    
        # Do parsing of command line arguments and other stuff here. And then
        # make calls to whatever functions and classes that are defined in your
        # module. For example:
        foo(sys.argv[1])
    
    
    if __name__ == '__main__':
        main()
    

    Now there is no difference, how you would use it: as a script or as a module. So inside your unit-testing code you can just import foo function, call it and make any assertions you want.

提交回复
热议问题