『心善淵』Selenium3.0基礎 — 26、unittest測試框架的斷言

繁華似錦Fighting發表於2021-07-14

1、斷言介紹

在執行測試用例的過程中,最終用例是否執行通過,是通過判斷測試得到的實際結果和預期結果是否相等決定的,這時會用到斷言方法。

本著沒有訊息就是最好的訊息的原則,如果斷言成功不採取任何措施(不輸入任何日誌),否則就會觸發AssertionError(斷言錯誤)的異常。

2、常用的斷言方法

斷言方法名稱 使用引數 驗證
assertEqual()(常用) a,b,[msg='測試失敗時列印的資訊'] 斷言a和b是否相等,相等則測試用例通過
assertNotEqual() a,b,[msg='測試失敗時列印的資訊'] 斷言a和b是否相等,不相等則測試用例通過。
assertTrue()(常用) x,[msg='測試失敗時列印的資訊'] 斷言x是否True,是True則測試用例通過
assertFalse() x,[msg='測試失敗時列印的資訊'] 斷言x是否false,是false則測試用例通過
assertIs() a,b,[msg='測試失敗時列印的資訊'] 斷言a是否是b,是則測試用例通過
assertNotIs() a,b,[msg='測試失敗時列印的資訊'] 斷言a是否是b,不是則測試用例通過
assertIsNone() x,[msg='測試失敗時列印的資訊'] 斷言x是否None,是None則測試用例通過
assertIsNotNone() x,[msg='測試失敗時列印的資訊'] 斷言x是否None,不是None則測試用例通過。
assertIn() a,b,[msg='測試失敗時列印的資訊'] 斷言a是否在b中,在b中則測試用例通過
assertNotIn() a,b,[msg='測試失敗時列印的資訊'] 斷言a是否在b中,不在b中則測試用例通過
assertIsInstance() a,b,[msg='測試失敗時列印的資訊'] 斷言a是否是b的一個例項,是則測試用例通過。
assertNotIsInstance() a,b,[msg='測試失敗時列印的資訊'] 斷言a是否是b的一個例項,不是則測試用例通過。

提示:如果ab斷言失敗,則輸出msg中定義的資訊,如果沒有定義msg,則輸出系統異常。

3、斷言示例

"""
1.學習目標
    必須掌握unittest中斷言使用
2.語法
    2.1 編寫位置
            在測試用例中去編寫,先執行測試用例,最後一行斷言。
    2.2 使用的斷言方法
    	注意:前邊a是預期,後邊b是測試實際的值
        (1)assertEqual(a,b,msg)
            斷言a和b是否相等,如果相等,斷言成功,否則斷言失敗
        (2)assertTrue(x,msg)
            斷言條件x是否為True,如果是,斷言成功,否則斷言失敗
        (3)其他斷言用法類似。
    2.3 判定斷言結果
        斷言成功,控制檯沒有任何提示
        斷言失敗,控制檯AssertionError關鍵字會出現
3.需求
    編寫一個有斷言的測試類
"""
# 1 匯入unittest
import unittest


# 2 建立測試類
class Test_demo(unittest.TestCase):

    # 3 編寫test case
    def test_case_03(self):
        """測試用例3"""
        print("執行測試用例3")
        # 用例步驟執行完成後做斷言
        # assertEqual斷言a和b是否相等
        self.assertEqual(2, 1 + 1, msg="斷言成功")

    """
    執行結果:
        斷言成功,控制檯沒有任何提示

    下面是總測試結果的日誌:
        執行測試用例3
        # 在0.005秒內進行1次測試
        Ran 1 test in 0.005s

        # 測試用例全部通過
        OK
    """

    def test_case_02(self):
        """測試用例2"""
        print("執行測試用例2")
        # assertEqual斷言a和b是否相等
        self.assertEqual(3, 1 + 1, msg="斷言失敗")

        """
        執行結果:

            執行測試用例2

            斷言失敗
            3 != 2

            Expected(預期) :2
            Actual(實際)   :3

            下面會有報錯資訊(主要內容):
                AssertionError: 2 != 3 : 斷言失敗

                # 在0.008秒內進行1次測試
                Ran 1 test in 0.008s

                # 失敗一個測試用例
                FAILED (failures=1)

                # 斷言失敗
                Assertion failed
        """

    def test_case_01(self):
        """測試用例1"""
        print("執行測試用例1")
        # 斷言條件x是否為True
        self.assertTrue(1 > 2, msg="條件不成立,斷言失敗")


# 4 編寫普通方法
if __name__ == '__main__':
    # 執行當前測試類中,以test開頭的測試用例
    unittest.main()

相關文章