unittest用例执行的顺序

unittest在执行用例(test_xxx)时,并不是按从上到下的顺序执行,有特定的顺序。

示例:

 1 import unittest 
 2 
 3 class TestBdd(unittest.TestCase):
 4     def setup(self):
 5         print("test TestBdd :")
 6 
 7     def test_ccc(self):
 8         print("test ccc")
 9 
10     def test_aaa(self):
11         print("test aaa")
12 
13     def tearDown(self):
14         pass
15 
16 class TestAdd(unittest.TestCase):
17     
18     def setup(self):
19         print("test TestAdd :")
20 
21     def test_bbb(self):
22         print("test bbb") 
23    
24     def tearDown(self):
25         pass
26 
27 if __name__ == '__main__':
28     unittest.main()

执行结果:

==============
test TestAdd:
test bbb
.test TestBdd:
test aaa
.test TestBdd:
test ccc
. 
-------------------------

unittest框架默认根据ACSII码的顺序加载测试用例,数字与字母的顺序为:0~9,A~Z,a~z。

  • 对于类来说,class TestAxx 会优先于class TestBxx被执行。
  • 对于方法来说,test_aaa()方法会有优先于test_bbb()被执行。

对于测试目录与测试文件来说,unittest同样是按照这个规则来加载测试用例的。

如果不想让test—bbb()先执行,需要通过TestSuite类的addTest()方法按照一定的顺序来加载

 1 run.py
 2 
 3 ....
 4 
 5 if __name__ == '__main__':
 6     #构造测试集
 7     suite = unittest.TestSuite()
 8     suite.addTest(TestBdd("test_ccc"))
 9     suite.addTest(TestAdd("test_bbb"))
10     suite.addTest(TestBdd("test_aaa"))
11     #执行测试
12     runner = unittest.TextTestRunner()
13     runner.run(suite)

执行结果如下:

===============
test TestBdd:
test ccc
.test TestAdd:
test bbb
.test TestBdd:
test aaa
.
--------------------
原文地址:https://www.cnblogs.com/Mollylin/p/10347962.html