Python+selenium之unittest单元测试(3)关于测试用例执行的顺序

一、测试用例执行的顺序

用例的执行顺序涉及多个层级,在多个测试目录的情况下,先执行哪个目录?在多个测试文件的情况下,先执行哪个文件?在多个测试类的情况下,先执行哪个测试类?,在多个测试方法(用例)的情况下,先执行哪个测试方法?

 1 import unittest
 2 from calculator import Count
 3 
 4 
 5 class TestBdd (unittest.TestCase):
 6     def setUp(self):
 7         print("test TestBdd :")
 8 
 9     def test_ccc(self):
10         print("test ccc")
11 
12     def test_aaa(self):
13         j = Count(2, 4)
14         print("test aaa")
15 
16     def tearDown(self):
17         pass
18 
19 
20 class TestAdd (unittest.TestCase):
21     def setUp(self):
22         print("test TestAdd :")
23 
24     def test_bbb(self):
25         print("test bbb")
26 
27 
28 
29     def tearDown(self):
30         pass
31 
32 
33 if __name__ == '__main__':
34     '''
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 '''
43     unittest.main()

unittest框架默认会根据ASCII码的顺序加载测试用例,数字和字母的顺序为:0-9,a-z,A-Z.所以TestAdd类会优先于TestBdd类被执行,test_aaa()方法会优先于test_ccc()被执行,因而并没有按照用例从上到下的顺序执行。因而它并没有按照用例从上到下执行的顺序执行。

假如想要按照指定的顺序执行测试用例,就不能使用默认的main()函数,而是需要通过TestSuite()类的addTest()方法按照一定的顺序加载。

 1 import unittest
 2 from calculator import Count
 3 
 4 
 5 class TestBdd (unittest.TestCase):
 6     def setUp(self):
 7         print("test TestBdd :")
 8 
 9     def test_ccc(self):
10         print("test ccc")
11 
12     def test_aaa(self):
13         j = Count(2, 4)
14         print("test aaa")
15 
16     def tearDown(self):
17         pass
18 
19 
20 class TestAdd (unittest.TestCase):
21     def setUp(self):
22         print("test TestAdd :")
23 
24     def test_bbb(self):
25         print("test bbb")
26 
27 
28 
29     def tearDown(self):
30         pass
31 
32 
33 if __name__ == '__main__':
34     suite = unittest.TestSuite ()
35     suite.addTest (TestBdd ('test_ccc'))
36     suite.addTest (TestBdd ('test_aaa'))
37     suite.addTest (TestAdd ('test_bbb'))
38     # suite.addTest (TestSub ('test_sub2'))
39     run = unittest.TextTestRunner ()
40     run.run (suite)
41 
42     # unittest.main()

现在的执行顺序是addTest()方法所加载的顺序。discover()的加载测试用例的规则与main()方法相同。所以,我们只能通过测试用例的命名来提高被执行的优先级。例如,将希望先被执行的测试用例命名为“test_a”,将希望最后执行的测试用例命名为“test_z”

二、执行多级目录的用例

在对应的测试过程中,有控制web用例的数量,但是当测试用例达到一定的量级,就要考虑划分目录

 

posted @ 2017-09-22 16:16  木棉花的漂泊  阅读(983)  评论(0编辑  收藏  举报