Search code examples
pythonunit-testingverbosity

Python, unittest: Can one make the TestRunner completely quiet?


Is there a way to make unittest.TextTestRunner completely quiet, meaning it never prints to output on its own? Even at verbosity=0 it prints results when done.

I want to process the TestResult object returned by the runner before anything is printed.


Solution

  • TextTestRunner has a stream=sys.stderr in its constructor:

    def __init__(self, stream=sys.stderr, descriptions=1, verbosity=1)
    

    Change it to a null stream.

    result = unittest.TextTestRunner(stream = open(os.devnull, 'w')).run(alltests)
    if len(result.failures) or len(result.errors):
        print "Sorry."