Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python unittest report passed test

Hello I have a test module like the following under "test.py":

class TestBasic(unittest.TestCase):
    def setUp(self):
        # set up in here

class TestA(TestBasic):
    def test_one(self):
        self.assertEqual(1,1)

    def test_two(self):
        self.assertEqual(2,1)

if __name__ == "__main__":
    unittest.main()

And this works pretty good, but I need a way to print which test passed, for example I could print the output to the console:

test_one: PASSED
test_two: FAILED

Now the twist, I could add a print statement right after the self.assertEqual() and that would be a passed test and I could just print it, but I need to run the test from a different module, let's say "test_reporter.py" where I have something like this:

import test
suite = unittest.TestLoader().loadTestsFromModule(test)
results = unittest.TextTestRunner(verbosity=0).run(suite)

at this point with results is when I build a report.

So please any suggestion is welcome

Thanks !!

like image 629
PepperoniPizza Avatar asked May 21 '13 21:05

PepperoniPizza


Video Answer


1 Answers

Like Corey's comment mentioned, if you set verbosity=2 unittest will print the result of each test run.

results = unittest.TextTestRunner(verbosity=2).run(suite)

If you want a little more flexibility - and you might since you are creating suites and using test runners - I recommend that you take a look at Twisted Trial. It extends Python's unittest module and provides a few more assertions and reporting features.

Writing your tests will be exactly the same (besides subclassing twisted.trial.unittest.TestCase vs python's unittest) so your workflow won't change. You can still use your TestLoader but you'll have the options of many more TestReporters http://twistedmatrix.com/documents/11.1.0/api/twisted.trial.reporter.html.

For example, the default TestReporter is TreeReporter which returns the following output: enter image description here

like image 84
Carlos Avatar answered Oct 26 '22 00:10

Carlos