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()所做的事情是每个用例都需要的。

原文地址:https://www.cnblogs.com/fengyiru6369/p/7575101.html