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用例的数量,但是当测试用例达到一定的量级,就要考虑划分目录