Python + selenium之组织unittest单元测试用例
当增加被测功能和相应的测试用例之后unittest单元测试框架如何扩展和组织新增的测试用例的。
1 # coding =utf-8 2 # calculator 3 4 class Count (): 5 def __init__(self, a, b): 6 self.a = int (a) 7 self.b = int (b) 8 9 def add(self): 10 return self.a + self.b 11 12 def sub(self): 13 return self.a - self.b
1 import unittest 2 from calculator import Count 3 4 5 class TestAdd (unittest.TestCase): 6 def setUp(self): 7 print("加法测试开始") 8 9 def test_add(self): 10 j = Count(2, 3) 11 self.assertEqual (j.add (), 4, msg='加法不行等') 12 13 def test_add2(self): 14 j = Count(2, 4) 15 self.assertEqual (j.add (), 5, msg='加法不行等') 16 17 def tearDown(self): 18 print("加法测试结束") 19 20 21 class TestSub (unittest.TestCase): 22 def setup(self): 23 print("减法测试开始") 24 25 def test_sub(self): 26 j = Count(10, 3) 27 self.assertEqual (j.sub (), 18, msg='键法不行等') 28 29 def test_sub2(self): 30 j = Count(10, 2) 31 self.assertEqual (j.sub (), 18, msg='键法不行等') 32 33 def tearDown(self): 34 print("减法测试结束") 35 36 37 if __name__ == '__main__': 38 suite = unittest.TestSuite () 39 suite.addTest (TestAdd ('test_add')) 40 suite.addTest (TestAdd ('test_add2')) 41 suite.addTest (TestSub ('test_sub')) 42 suite.addTest (TestSub ('test_sub2')) 43 run = unittest.TextTestRunner () 44 run.run (suite)
运行的结果如下:
上面中创建了TestAdd()和TestSub()两个类,分别测试calculator.py文件中的add()和sub()两个功能。通过TestSuite类的addTest()方法把不同测试类中的测试方法组装到测试套件中。
通过。
从测试结果可以看出,setUp()和tearDown()方法分别作用于每个测试用例的开始和结束。如果每个类中的setUp和tearDown()所做的事情是一样的,就可以将其封装再一个测试类中。
1 import unittest 2 from calculator import Count 3 4 5 class MyTest (unittest.TestCase): 6 def setUp(self): 7 print("test case start") 8 9 def tearDown(self): 10 print("test case end") 11 12 13 class TestAdd (MyTest): 14 def test_add(self): 15 j = Count (2, 3) 16 self.assertEqual (j.add (), 5, msg='加法不行等') 17 18 def test_add2(self): 19 j = Count (2, 4) 20 self.assertEqual (j.add (), 6, msg='加法不行等') 21 22 23 class TestSub (MyTest): 24 def test_sub(self): 25 j = Count (10, 3) 26 self.assertEqual (j.sub (), 7, msg='键法不行等') 27 28 29 def test_sub2(self): 30 j = Count (10, 2) 31 self.assertEqual (j.sub (), 8, msg='键法不行等') 32 33 34 if __name__ == '__main__': 35 suite = unittest.TestSuite () 36 suite.addTest (TestAdd ('test_add')) 37 suite.addTest (TestAdd ('test_add2')) 38 suite.addTest (TestSub ('test_sub')) 39 suite.addTest (TestSub ('test_sub2')) 40 run = unittest.TextTestRunner () 41 run.run (suite) 42 # unittest.main()
创建MyTest()类的好处显而易见,对于测试类和测试方法来说,应将注意力放在具体用例的编写商,无需关心SetUp()和TearDown()所做的事情。前提条件是SetUp()和TearDown()所做的事情是每个用例都需要的。