
- 單元測試框架教程
- 單元測試框架 - 首頁
- 單元測試框架 - 概述
- 單元測試框架 - 框架
- 單元測試框架 - API
- 單元測試框架 - 斷言
- 單元測試框架 - 測試發現
- 單元測試框架 - 跳過測試
- 單元測試框架 - 異常測試
- 單元測試框架 - 時間測試
- 單元測試框架 - Unittest2
- 單元測試框架 - 訊號處理
- 單元測試框架 - Doctest
- 單元測試框架 - Doctest API
- 單元測試框架 - Py.test 模組
- Nose 測試 - 框架
- Nose 測試 - 工具
- 單元測試框架資源
- 單元測試框架 - 快速指南
- 單元測試框架 - 資源
- 單元測試框架 - 討論
單元測試框架 - 跳過測試
從 Python 2.7 開始添加了跳過測試的支援。可以有條件地或無條件地跳過單個測試方法或 TestCase 類。框架允許將某個測試標記為“預期失敗”。此測試將“失敗”,但在 TestResult 中不會被計為失敗。
要無條件跳過方法,可以使用以下 unittest.skip() 類方法:
import unittest def add(x,y): return x+y class SimpleTest(unittest.TestCase): @unittest.skip("demonstrating skipping") def testadd1(self): self.assertEquals(add(4,5),9) if __name__ == '__main__': unittest.main()
由於 skip() 是一個類方法,因此它以 @ 符號為字首。該方法帶有一個引數:一個描述跳過原因的日誌訊息。
執行上述指令碼時,控制檯將顯示以下結果:
C:\Python27>python skiptest.py s ---------------------------------------------------------------------- Ran 1 test in 0.000s OK (skipped = 1)
字元“s”表示測試已被跳過。
跳過測試的另一種語法是在測試函式內使用例項方法 skipTest()。
def testadd2(self): self.skipTest("another method for skipping") self.assertTrue(add(4 + 5) == 10)
以下裝飾器實現測試跳過和預期失敗:
序號 | 方法和描述 |
---|---|
1 | unittest.skip(reason) 無條件跳過已裝飾的測試。reason 應描述跳過測試的原因。 |
2 | unittest.skipIf(condition, reason) 如果 condition 為真,則跳過已裝飾的測試。 |
3 | unittest.skipUnless(condition, reason) 除非 condition 為真,否則跳過已裝飾的測試。 |
4 | unittest.expectedFailure() 將測試標記為預期失敗。如果執行時測試失敗,則該測試不會被計為失敗。 |
以下示例演示了條件跳過和預期失敗的使用。
import unittest class suiteTest(unittest.TestCase): a = 50 b = 40 def testadd(self): """Add""" result = self.a+self.b self.assertEqual(result,100) @unittest.skipIf(a>b, "Skip over this routine") def testsub(self): """sub""" result = self.a-self.b self.assertTrue(result == -10) @unittest.skipUnless(b == 0, "Skip over this routine") def testdiv(self): """div""" result = self.a/self.b self.assertTrue(result == 1) @unittest.expectedFailure def testmul(self): """mul""" result = self.a*self.b self.assertEqual(result == 0) if __name__ == '__main__': unittest.main()
在上面的示例中,testsub() 和 testdiv() 將被跳過。在第一種情況下 a>b 為真,而在第二種情況下 b == 0 不為真。另一方面,testmul() 已被標記為預期失敗。
執行上述指令碼時,兩個跳過的測試顯示“s”,預期失敗顯示為“x”。
C:\Python27>python skiptest.py Fsxs ================================================================ FAIL: testadd (__main__.suiteTest) Add ---------------------------------------------------------------------- Traceback (most recent call last): File "skiptest.py", line 9, in testadd self.assertEqual(result,100) AssertionError: 90 != 100 ---------------------------------------------------------------------- Ran 4 tests in 0.000s FAILED (failures = 1, skipped = 2, expected failures = 1)
廣告