unittest是Python的標準的單元測試框架,能夠很好的和自動化測試相結合,並且有獨立的測試報告框架
unittest的主要構成部分
1)test fixture
用於初始化清理等操作。在selenium測試中,我們可以用來做webdriver的初始化。
2)testcase
測試用例,unittest的最小單元。
用於對指定輸入的返回結果進行檢測。
在unittest中提供了testcase基類,用來創建新的測試用例。
3)testsuit
測試套件,一系列測試用例或測試套件的組合
在unittest中由testsuit來實現
4)test runner
測試執行器,負責用例執行並生成測試報告。
在unittest中提供了命令行模式和Gui模式來執行
unittest的標準案例
import unittest import sys def add(a,b): return(a+b) class demoTest(unittest.TestCase): def test_add_4_5(self): self.assertEqual(add(4,5),9) if __name__=='__main__': unittest.main()
Ran 1 test in 0.000s
OK
下面一步步展示如何使用unittest來測試
1)導入unittest模塊
import unittest
2)定義一個被測試函數
def add(a,b): return(a+b)
3)創建一個 unittest.TestCase子類
class demoTest(unittest.TestCase):
4)在demoTest新增一個測試方法:test_4_5
測試方法必須以test開頭
class demoTest(unittest.TestCase): def test_add_4_5(self): self.assertEqual(add(4,5),9)5)在新增的測試方法test_4_5中添加斷言驗證
class demoTest(unittest.TestCase): def test_add_4_5(self): self.assertEqual(add(4,5),9)
6)最後在main函數中調用unittest方法啓動測試。
下表信息是在運行unittest時可能的輸出信息
序號 | 描述 |
1 | OK表示測試通過 |
2 | fail表示測試不通過,控制檯輸出斷言異常信息 |
3 | ERROR表示測試異常 |
將上面的斷言語句改寫成
self.assertEqual(add(4,5),8)
輸出的錯誤結果爲
F
======================================================================
FAIL: test_add_4_5 (__main__.demoTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:/Users/minkl/PycharmProjects/untitled/unitest.py", line 8, in test_add_4_5
self.assertEqual(add(4,5),8)
AssertionError: 9 != 8
----------------------------------------------------------------------
Ran 1 test in 0.002s
FAILED (failures=1)