UnitTest中:setUpClass(cls)與setUp(self)的區別與使用


setUpClass(cls) tearDownClass(cls) 類方法:

1. 執行函數方法前,先執行一次setUpClass(cls)里面的方法,執行完函數方法后,再執行一次tearDownClass(cls)里面的函數方法。

2、unittest默認根據ASCII碼的順序加載執行用例,數字與字母的順序為:0-9,A-Z,a-z。所以以A開頭的測試用例方法會優先執行,以a開頭會后執行。

3. 函數方法以test開頭進行讀取,不是test開頭的不執行該方法。例如:test_login 執行  login_test 不執行

4、注意:setUpClass(cls) 與 tearDownClass(cls) 並不一定要組合使用,它們是同級關系不是上下級關系,可以單獨拆分使用。例如:setUpClass(cls) 為前置條件,tearDown(self)為后置條件,那么setUpClass(cls)需要添加裝飾器且里面的方法只會執行一次,tearDown(self)后置條件不用加裝飾器,只是每執行完一個函數方法后,都會去執行一次tearDown(self)函數里面的方法-- 如圖(2)輸出:

使用必須要加 @classmethod內置裝飾器,否則會報 “TypeError: setUpClass() missing 1 required positional argument: 'cls'”的錯誤。使用類方法執行所有用例時里面的方法只會執行一次,不會重復執行-- 如(1)輸出:

圖(1)

 

圖(2)

 

-----------------------------------------------

setUp(self) tearDown(self) 函數:

1. 每次執行函數方法時,必須先執行一次setUp(self)函數,執行完一個函數方法后,必須再執行一次tearDown(self)函數。

2、unittest默認根據ASCII碼的順序加載執行用例,數字與字母的順序為:0-9,A-Z,a-z。所以以A開頭的測試用例方法會優先執行,以a開頭會后執行。

3. 當函數方法以test開頭進行讀取,不是以test開頭的不執行該方法。

執行用例時每運行一條用例都會去執行一遍里面的方法,如下圖輸出:


進行定義全局變量並且賦值,用例執行時可以直接使用也可以替換重新賦值

 

以@classmethod
def tearDownClass(cls): 類方法定義后置的時候不能在里面進行調用其它地方的方法使用,須以 def tearDown(self): 函數方法進行定義后置的才能在里面調用其它地方的方法,具體原因還有待研究---

 


免責聲明!

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



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