一、前置和后置
1.setUp:在寫測試用例的時候,每次操作其實都是基於打開瀏覽器輸入對應網址這些操作,這個就是執行用例的前置條件。
2.tearDown:執行完用例后,為了不影響下一次用例的執行,一般有個數據還原的過程,這就是執行用例的后置條件。
3.前置和后置都是非必要的條件,如果沒有也可以寫pass
import unittest,time,ddt class Test(unittest.TestCase): # 定義一個測試的類,並繼承unittest.TestCase這個類 @classmethod # 裝飾器,所有用例執行前執行一次 def setUpClass(cls): print("start!") @classmethod # 裝飾器,所有用例執行后執行一次 def tearDownClass(cls): time.sleep(1) print("end!") def setUp(self): # 每條用例執行前執行一次 print("開始") def tearDown(self): # 每條用例執行后執行一次 print("結束") def test01(self): # 測試用例的名稱以test開頭,每條函數相當於一條測試用例 print("執行測試用例01") a = 1 b = 1 self.assertEqual(a, b) # 判斷a和b是否相等 def test03(self): print("執行測試用例03") a = "8" b = "hello world!" self.assertIn(a, b) # 判斷a是否在b中 def test02(self): print("執行測試用例02") a = True self.assertTrue(a) # 判斷a是True if __name__=="__main__": unittest.main(verbosity=2) # runner = unittest.TextTestRunner() # runner.run() 運行結果如下: test01 (__main__.Test) ... ok test02 (__main__.Test) ... ok test03 (__main__.Test) ... FAIL start! 開始 執行測試用例01 結束 開始 執行測試用例02 結束 開始 執行測試用例03 結束 end!
二、裝飾器
1、setUp與setUpClass區別
setup():每個測試case運行前運行
teardown():每個測試case運行完后執行
setUpClass():必須使用@classmethod 裝飾器,所有case運行前只運行一次
tearDownClass():必須使用@classmethod裝飾器,所有case運行完后只運行一次
2、@是修飾符,classmethod是python里的類方法