Unitest框架的使用(二)Unittest斷言及應用

一個簡單的Case

Unittest框架使用通常需要以下4個必不可少的步驟:

  1. 導出Unittest框架
import unittest
  1. 創建測試類
import unittest


class TestMath(unittest.TestCase):
  1. 創建測試用例和斷言
import unittest


class TestMath(unittest.TestCase):

    def test_add(self):
        self.assertEqual(5, (2+3))  # 斷言相等
  1. 從Unittest裏調用main()方法,執行測試用例
if __name__ == '__main__':
    unittest.main()

**注意:**測試用例必須以Test開頭

我們現在來做一個簡單的Case,這裏我們用了斷言,是否相等,斷言後面會詳細解釋,先來看看這個Case

import unittest


class TestMath(unittest.TestCase):

    def test_add(self):
        self.assertEqual(5, (2+3))  # 斷言是否相等

if __name__ == '__main__':
    unittest.main()

運行結果:

Ran 1 test in 0.002s
OK

在這裏插入圖片描述

我們可以看到Unittest顯示測試完成,實際測試我們肯定會有失敗的Case,我們再失敗的Case

import unittest


class TestMath(unittest.TestCase):

    def test_Add(self):
        self.assertEqual(5, (2+3))  # 斷言相等

    def test_Add_fail(self):
        self.assertEqual(5, (2+1))  # 失敗Case


if __name__ == '__main__':
    unittest.main()

運行結果,失敗,並給出失敗原因

在這裏插入圖片描述

3 != 5
Expected :5
Actual :3

setUp()和tearDown()

setUp是測試執行之前調用,裏面可以放一些自己的方法
tearDown()是測試執行之後調用,可以用來清理測試環境等

可以下面這個例子,測試執行之前,我們打印,測試執行時,我們在打印,測試執行完後,我們再打印,

import unittest


class TestMath(unittest.TestCase):

    # 用例執行之前,自動執行
    def setUp(self):
        print("用例執行之前,我會執行")

    # 用例執行之後,自動執行
    def tearDown(self):
        print("用例執行之後,我會執行")

    # 斷言相等

    def test_Add(self):
        self.assertEqual(5, (2+3))
        print("相等")

if __name__ == '__main__':
    unittest.main()

在這裏插入圖片描述

Unittest斷言

unittest提供了豐富的斷言方法,常用爲以下幾種:

· 判斷相等

assertEqual(a,b)/assertNotEqual(a,b): 斷言值是否相等
assertIs(a,b)/assertIsNot(a,b): 斷言是否同一對象(內存地址一樣)
assertListEqual(list1, list2)/assertItemNotEqual(list1, list2): 斷言列表是否相等
assertDictEqual(dict1, dict2)/assertDictNotEqual(dict1, dict2): 斷言字典是否相等

· 是否爲空

assertIsNone(a)/assertIsNotNone(a)

· 判斷真假

assertTrue(a)/assertFalse(a)

· 是否包含

assertIn(a,b)/assertNotIn(a,b) # b中是否包含a

· 大小判斷

assertGreater(a,b)/assertLess(a,b) : 斷言a>b / 斷言a<b
assertGreaterEqual(a,b)/assertLessEqual: 斷言a>=b / 斷言a<=b

· 類型判斷

assertIsInstance(a,dict)/assertNotIsInstance(a,list) # 斷言a爲字典 / 斷言a非列表

下面再看幾個常用斷言的例子:

import unittest


class TestMath(unittest.TestCase):

    # 斷言相等
    def test_Add(self):
        self.assertEqual(5, (2+3))
        print("相等")

    # 斷言不等
    def test_NotEqual(self):
        self.assertNotEqual(5, (1 + 3))

    # 斷言爲真
    def test_True(self):
        self.assertTrue(1 + 1 == 2, "The result is True")

    # 斷言爲假
    def test_False(self):
        self.assertFalse(1 + 1 == 3, "The result is False")

    # 斷言包含
    def test_In(self):
        self.assertIn("s", "solo")


if __name__ == '__main__':
    unittest.main()

輸出結果:

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章