1. 程式人生 > 其它 >unittest篇5-用例的跳過skip

unittest篇5-用例的跳過skip

技術標籤:unittestunittest

1、前言

上一篇部落格,我們介紹了測試腳手架,也就是當我們在實際的測試中, 我們可能有些引數或者有些用例case只需要執行一次,那麼我們也只能在用例執行一次,不然重複執行,會導致資料覆蓋等情況。我們可以採取測試腳手架來完成對應的操作。

今天這篇部落格我們來介紹一下,用例的跳過。

2、跳過

在執行測試中,有時需要直接跳過某些測試用例,或者當某些測試用例符合某個條件時跳過測試,又或者直接將測試用例設定失敗狀態。unittest提供了一些實現這些需求的裝飾器。

2.1 unittest.skip(reason)

1、含義:表示無條件的跳過裝飾的測試,需要說明跳過測試的原因

2、運用:

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、結果:
無論執行結果是否失敗,都將用例標記為失敗,但不會丟擲失敗資訊.
在這裡插入圖片描述