I want to run the unittests verbosely, so you can see which test is running (the function name, or if you have a one-line docstring, it displays that), instead of the usual "..E..F." output.
There are two ways, the first is to construct a test-suite using TestLoader
, pass it to TestTextLoader(verbosity=2)
:
suite = unittest.TestSuite([ unittest.TestLoader().loadTestsFromTestCase(test_tvnamer.test_name_parser), unittest.TestLoader().loadTestsFromTestCase(test_tvdb_api.test_tvdb) ]) # for one test, you can do: # suite = unittest.TestLoader().loadTestsFromTestCase(test_name_parser) runner = unittest.TextTestRunner(verbosity = 2) runner.run(suite)
test_name_parser and test_tvdb are the classes containing my tests.
The other simpler (but less flexible) method is to simply use the unittest.main() function, but with a verbose test runner:
runner = unittest.TextTestRunner(verbosity = 2) unittest.main(testRunner = runner)
This will run like a regular unittest.main()
call (doing automagic test discovery), but verbosely.
I'm posting this because the only solution I found in a quick search was to append --verbose
to sys.argv
so the unittest runner thought it was specified on the command line, which is horrible..