1. 程式人生 > >unittest用例執行的順序

unittest用例執行的順序

def set testcase 會有 == div style sel 規則

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
.
--------------------

unittest用例執行的順序