The Interesting Times of Skipper

Python Unit Test

##Basic Unit Test

Test Class

  1 class Widget:
  2     name_ = "Default"
  3     size_ = set([0, 0])
  4
  5     def __init__(self, name):
  6         self.name_ = name
  7
  8     def size(self):
  9         return self.size_
 10
 11     def resize(self, height, width):
 12         self.size_ = ([height, width])
 13
 14     def dispose(self):
 15         self.name_ = "Default"
 16         self.size_ = None

Test Case

  1 import unittest
  2
  3
  4 class MyTestCase(unittest.TestCase):
  5
  6     def test_upper(self):
  7         self.assertEqual('foo'.upper(), 'FOO')
  8
  9     def test_isupper(self):
 10         self.assertTrue('FOO'.isupper())
 11         self.assertFalse('Foo'.isupper())
 12
 13     def test_split(self):
 14         s = 'hello world'
 15         self.assertEqual(s.split(), ['hello', 'world'])
 16
 17         with self.assertRaises(TypeError): # Exception
 18             s.split(2)                     # It should be exception here
 19
 20 if __name__ == '__main__':
 21     # unittest.main()
 22
 23     suite = unittest.TestLoader().loadTestsFromTestCase(MyTestCase)
 24     unittest.TextTestRunner(verbosity=2).run(suite)

Advanced Unit Test

  1 import unittest
  2 import sys
  3 import Widget
  4
  5 class WidgetTestCase(unittest.TestCase):
  6     @classmethod
  7     def setUpClass(cls):
  8         pass
  9
 10     @classmethod
 11     def tearDownClass(cls):
 12         pass
 13
 14     def setUp(self):
 15         self.widget = Widget.Widget("The widget")
 16
 17     def tearDown(self):
 18         self.widget.dispose()
 19         self.widget = None
 20
 21     def test_default_size(self):
 22         self.assertEqual(self.widget.size(), ([50, 50]),
 23                          'incorrect default size')
 24
 25     def test_resize(self):
 26         self.widget.resize(100, 150)
 27         self.assertEqual(self.widget.size(), ([100, 150]),
 28                          'wrong size after resize')
 29
 30     @unittest.skip("demostrating skipping")
 31     def test_nothing(self):
 32         pass
 33
 34     @unittest.skipUnless(sys.platform.startswith("win"), "requires Windows")
 35     def test_windows_support(self):
 36         # windows specific testing code
 37         pass
 38
 39     @unittest.expectedFailure
 40     def test_fail(self):
 41         self.assertEqual(1, 0, "broken")
 42
 43 if __name__ == '__main__':
 44
 45     """ No.1 Method """
 46     """
 47     widgetTestSuite = unittest.TestSuite()
 48     defaultSizeTestCase = WidgetTestCase('test_default_size')
 49     resizeTestCase = WidgetTestCase('test_resize')
 50
 51     widgetTestSuite.addTest(defaultSizeTestCase)
 52     widgetTestSuite.addTest(resizeTestCase)
 53     """
 54
 55     """ No.2 Method """
 56     widgetTestSuite = unittest.TestLoader().loadTestsFromTestCase(WidgetTestCase)
 57
 58     unittest.TextTestRunner(verbosity=2).run(widgetTestSuite)
 59     # unittest.main()

Made with by Álvaro