unittest篇5-用例的跳過skip
阿新 • • 發佈:2021-01-23
1、前言
上一篇部落格,我們介紹了測試腳手架,也就是當我們在實際的測試中, 我們可能有些引數或者有些用例case只需要執行一次,那麼我們也只能在用例執行一次,不然重複執行,會導致資料覆蓋等情況。我們可以採取測試腳手架來完成對應的操作。
今天這篇部落格我們來介紹一下,用例的跳過。
2、跳過
在執行測試中,有時需要直接跳過某些測試用例,或者當某些測試用例符合某個條件時跳過測試,又或者直接將測試用例設定失敗狀態。unittest提供了一些實現這些需求的裝飾器。
2.1 unittest.skip(reason)
1、含義:表示無條件的跳過裝飾的測試,需要說明跳過測試的原因
import unittest
class TestCaseDemo(unittest.TestCase):
@unittest.skip('直接跳過')
def testassertdemo(self):
self.assertNotEqual(1, 1)
def testassertdemo_1(self):
self.assertListEqual([1, 2], [1, 2])
def testassertdemo_2(self):
self.assertNotRegex("1" , "122") # 正則是否匹配
if __name__ == '__main__':
unittest.main()
3、結果:
第一條testassertdemo的case,裡面的斷言是不符合預期的,預期用例會報錯,但是由於skip直接跳過了,所以執行結果都是通過了。
2.2 unittest.skipIf(condition,reason)
1、含義:如果條件為真,那麼跳過的測試
2、運用:
import unittest
class TestCaseDemo(unittest.TestCase):
@unittest.skipIf(3> 2,'前面條件為真時,跳過此用例')
def testassertdemo(self):
self.assertNotEqual(1, 1)
def testassertdemo_1(self):
self.assertListEqual([1, 2], [1, 2])
def testassertdemo_2(self):
self.assertNotRegex("1", "122") # 正則是否匹配
if __name__ == '__main__':
unittest.main()
3、結果:
第一條case,前面的條件成立,同樣跳過此用例
2.3 unittest.skipUnless(condition,reason)
1、含義:當條件為真時,需要執行的測試
2、運用:
import unittest
class TestCaseDemo(unittest.TestCase):
@unittest.skipUnless(3>2,'前面條件為真時,需要執行此用例')
def testassertdemo(self):
self.assertNotEqual(1, 1)
def testassertdemo_1(self):
self.assertListEqual([1, 2], [1, 2])
def testassertdemo_2(self):
self.assertNotRegex("1", "122") # 正則是否匹配
if __name__ == '__main__':
unittest.main()
3、結果:
第一條用例,條件成立,執行該用例,所以報錯了
2.4 unittest.expectedFailure()
1、含義:不管執行結果是否失敗,都將測試標記為失敗
2、運用:
import unittest
class TestCaseDemo(unittest.TestCase):
@unittest.expectedFailure
def testassertdemo(self):
self.assertNotEqual(1, 2)
def testassertdemo_1(self):
self.assertListEqual([1, 2], [1, 2])
def testassertdemo_2(self):
self.assertNotRegex("1", "122") # 正則是否匹配
if __name__ == '__main__':
unittest.main()
3、結果:
無論執行結果是否失敗,都將用例標記為失敗,但不會丟擲失敗資訊.