1、什麼是跳過測試

當測試用例寫完後,有些模組有改動時候,會影響到部分用例的執行,這個時候我們希望暫時跳過這些用例。或者前面某個功能執行失敗了,後面的幾個用例是依賴於這個功能的用例,如果第一步就失敗了,後面的用例也就沒必要去執行了,為了節省用例執行時間,可選擇直接跳過測試。

2、常用的跳過測試方法和裝飾器

當執行有想要跳過的測試,我們可以通過skipskipIfskipUnless裝飾器跳過某個測試方法或者測試類。

  1. @unittest.skip(reason)skip(reason)裝飾器,無條件跳過裝飾的測試,並說明跳過測試的原因。
  2. @unittest.skipIf(reason)skipIf(condition,reason)裝飾器,條件為真時,跳過裝飾的測試,並說明跳過測試的原因。
  3. @unittest.skipUnless(reason)skipUnless(condition,reason)裝飾器,條件為假時,跳過裝飾的測試,並說明跳過測試的原因。
  4. @unittest.expectedFailure:測試標記為失敗。

3、跳過測試示例

"""
1.學習目標
瞭解unittest中跳過測試方法使用
2.語法
2.1 放置在需要跳過的測試用例之前
@跳過測試方法
測試用例
2.2 分類
@unittest.skip(跳過原因):表示無條件跳過執行
@unittest.skipIf(判斷條件,跳過原因): 當判斷條件為真時,跳過測試
@unittest.skipUnless(判斷條件,跳過原因):當判斷條件為假時,跳過測試
@unittest.expectedFailure: 直接將用例標記為失敗
3.需求
編寫測試類,使用跳過測試
"""
# 1 匯入unittest
import unittest # 2 建立測試類
class Test_demo(unittest.TestCase): # 3 編寫test case
# 第一條測試用例正常執行
def test_case_01(self):
"""測試用例1"""
print("執行測試用例1") # 新增skip,不執行測試
@unittest.skip("無條件跳過")
def test_case_02(self):
"""測試用例2"""
print("執行測試用例2") # 新增skipif,條件為真跳過測試
@unittest.skipIf(True, "條件為真,跳過測試")
def test_case_03(self):
"""測試用例3"""
print("執行測試用例3") # 新增skipIf,條件為假執行測試
@unittest.skipIf(2 > 3, "條件為假,執行用例")
def test_case_04(self):
"""測試用例4"""
print("執行測試用例4") # 新增skipUnless,條件為假不執行測試
@unittest.skipUnless(False, "條件為假,跳過測試")
def test_case_05(self):
"""測試用例5"""
print("執行測試用例5") # 新增skipUnless,條件為真執行測試
@unittest.skipUnless(True, "條件為真,執行用例")
def test_case_06(self):
"""測試用例6"""
print("執行測試用例6") # 新增expectedFailure,直接將用例標記為失敗
@unittest.expectedFailure
def test_case_07(self):
"""測試用例7"""
print("執行測試用例7") def test_case_08(self):
"""測試用例8"""
print("執行測試用例8") if __name__ == '__main__':
# 執行當前測試類中,以test開頭的測試用例
unittest.main()

執行結果

4、TestCase.skipTest()方法

TestCase.skipTest()方法跳過某個測試方法(瞭解)。

示例

# 1 匯入unittest
import unittest # 2 建立測試類
class TestDmeo(unittest.TestCase): # 3 編寫test case
def test_case_01(self):
"""測試用例1"""
print("執行測試用例1") #  TestCase.skipTest()方法
def test_case_02(self):
"""測試用例2"""
# 跳過測試方法
self.skipTest('跳過用例test_case2')
print("執行測試用例2") if __name__ == '__main__':
# 執行當前測試類中,以test開頭的測試用例
unittest.main()

執行結果