参考
1 # -*- coding: utf-8 -*- 2 """ 3 测试代码组织,整理( 非可执行) 4 5 """ 6 7 import unittest 8 from test_mathfunc import TestMathFunc 9 from HTMLTestRunner import HTMLTestRunner10 11 12 ### 113 14 def add(a, b):15 return a+b16 17 def minus(a, b):18 return a-b19 20 def multi(a, b):21 return a*b22 23 def divide(a, b):24 return a/b25 26 27 ### 228 class TestMathFunc(unittest.TestCase):29 """Test mathfuc.py"""30 31 ## 132 33 @classmethod34 def setUpClass(cls):35 print "This setUpClass() method only called once."36 37 @classmethod38 def tearDownClass(cls):39 print "This tearDownClass() method only called once too."40 41 42 ## 2 43 def setUp(self):44 print "do something before test.Prepare environment."45 46 def tearDown(self):47 print "do something after test.Clean up."48 49 50 51 ## 352 def test_add(self):53 """Test method add(a, b)"""54 print "add"55 self.assertEqual(3, add(1, 2))56 self.assertNotEqual(3, add(2, 2))57 58 def test_minus(self):59 """Test method minus(a, b)"""60 print "minus"61 self.assertEqual(1, minus(3, 2))62 63 def test_multi(self):64 """Test method multi(a, b)"""65 print "multi"66 self.assertEqual(6, multi(2, 3))67 68 @unittest.skip("I don't want to run this case.")69 def test_divide(self):70 """Test method divide(a, b)"""71 print "divide"72 self.assertEqual(2, divide(6, 3))73 self.assertEqual(2.5, divide(5, 2))74 75 76 77 if __name__ == '__main__':78 suite = unittest.TestSuite()79 suite.addTests(unittest.TestLoader().loadTestsFromTestCase(TestMathFunc))80 # suite.addTests(unittest.TestLoader().loadTestsFromTestCase(TestMathFunc2))81 # suite.addTests(unittest.TestLoader().loadTestsFromTestCase(TestMathFunc3))82 83 # tests = [TestMathFunc("test_add"), TestMathFunc("test_minus"), TestMathFunc("test_divide")]84 # suite.addTests(tests)85 86 with open('HTMLReport.html', 'w') as f:87 # runner = unittest.TextTestRunner(stream=f, verbosity=2)88 runner = HTMLTestRunner(stream=f,89 title='MathFunc Test Report',90 description='generated by HTMLTestRunner.',91 verbosity=292 )93 runner.run(suite)94