unittest框架系列三(跳過測試和預期失敗)
阿新 • • 發佈:2020-09-22
跳過測試和預期失敗
歡迎加入測試交流群:夜行者自動化測試(816489363)進行交流學習QAQ
–成都-阿木木
以下裝飾器和異常實現了測試方法及測試類的跳過和測試方法預期的失敗:
-
@unittest.skip
(原因)無條件跳過裝飾測試。原因應說明為何跳過測試。
-
@unittest.skipIf
(條件,原因)如果條件為真,則跳過修飾的測試。
-
@unittest.skipUnless
(條件,原因)除非條件為真,否則跳過裝飾性測試。
-
@unittest.expectedFailure
將測試標記為預期的失敗。如果測試失敗,則視為成功。如果測試通過,將被視為失敗。
-
異常
unittest.SkipTest
(原因)引發此異常以跳過測試。通常,您可以使用
TestCase.skipTest()
或跳過裝飾器之一,而不是直接提高它。
#!/user/bin/env python
# -*- coding: utf-8 -*-
"""
------------------------------------
@Project : mysite
@Time : 2020/8/28 11:32
@Auth : chineseluo
@Email : [email protected]
@File : unittest_demo.py
@IDE : PyCharm
------------------------------------
"""
import unittest
import sys
import pytest
class MyTestCase(unittest.TestCase):
Conut = 0
@unittest.skip("demonstrating skipping")
def test_nothing(self):
self.fail("shouldn't happen")
@unittest.skipIf(pytest.__version__ in ("5.4.3", "5.4.4"),
"not supported in this library version")
def test_format(self):
# Tests that work for only a certain version of the library.
print(pytest.__version__)
print(type(pytest.__version__))
pass
@unittest.skipUnless(sys.platform.startswith("linux"), "requires Windows")
def test_windows_support(self):
print(sys.platform)
# windows specific testing code 在windows平臺下進行測試
pass
def test_maybe_skipped(self):
if self.Conut == 0:
self.skipTest("external resource not available")
# test code that depends on the external resource
pass
if __name__ == '__main__':
unittest.main()
測試類也可以像測試方法一樣跳過:
@unittest.skip("showing class skipping")
class MySkippedTestCase(unittest.TestCase):
def test_not_run(self):
pass
預期的失敗使用expectedFailure()
裝飾器:
class ExpectedFailureTestCase(unittest.TestCase):
@unittest.expectedFailure
def test_fail(self):
self.assertEqual(1, 0, "broken")
注意:
- 跳過的測試方法,
setUp
和tearDown
將不會執行,setUpClass
和tearDownClass
仍會執行 - 跳過的測試類,
setUpClass
和tearDownClass
將不會執行,setUp
和tearDown
將不會執行