Unittest presents only total time spent on running all tests but does not present time spent on each test separately.
How to add timing of each test when using unittest?
Typical time budgeted on writing unit tests is about 1 day for every feature that takes 3-4 days of heads down coding. But that can vary with a lot of factors. 99% code coverage is great. Unit tests are great.
Unit Tests allows you to make big changes to code quickly. You know it works now because you've run the tests, when you make the changes you need to make, you need to get the tests working again. This saves hours. TDD helps you to realise when to stop coding.
Still, it seems as though a 10 second short-term attention span is more or less hard-wired into the human brain. Thus, a unit test suite used for TDD should run in less than 10 seconds. If it's slower, you'll be less productive because you'll constantly lose focus.
Note that the order in which the various test cases will be run is determined by sorting the test function names with respect to the built-in ordering for strings.
I suppose, that it's not possible for now: http://bugs.python.org/issue4080.
But you can do something like this:
import unittest import time class SomeTest(unittest.TestCase): def setUp(self): self.startTime = time.time() def tearDown(self): t = time.time() - self.startTime print('%s: %.3f' % (self.id(), t)) def testOne(self): time.sleep(1) self.assertEqual(int('42'), 42) def testTwo(self): time.sleep(2) self.assertEqual(str(42), '42') if __name__ == '__main__': suite = unittest.TestLoader().loadTestsFromTestCase(SomeTest) unittest.TextTestRunner(verbosity=0).run(suite)
Result:
__main__.SomeTest.testOne: 1.001 __main__.SomeTest.testTwo: 2.002 ---------------------------------------------------------------------- Ran 2 tests in 3.003s OK
You can use pytest with --durations=0
and it will give you execution time for each test
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With