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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM