python: 單元測試---unit test
python: 單元測試—unit test
幾個基本概念
TestCase(測試用例)
: 所有測試用例的基類,它是軟體測試中最基本的組成單元。一個test case就是一個測試用例,包含了一個完整的測試流程的測試單元,可以對某一問題進行驗證。
TestSuite(測試套件)
:多個測試用例test case的集合,TestSuite可以巢狀。
TestLoder
:將 TestCase載入到TestSuite的載入器。
TextTestRunner
:測試用例的執行器,其中的run(test)會執行TestSuite/TestCase中的run(result)方法。
TextTestResult
:測試結果會儲存到TextTestResult例項中,包括運行了多少用例,成功與失敗多少等資訊
TestFixture
: 建立測試程式碼的執行環境,指測試準備前構建臨時資料、目錄等以及執行測試後要做的清理工作,主要包括包括setUp和tearDown方法
流程
1.寫好TestCase:一個class繼承unittest.TestCase,就是一個測試測試用例,其中有多個以test開頭的方法,那麼 每一個這樣的,在load的時候會生成一個TestCase例項。如果一個class中有四個test開頭的方法,最後load到suite中時則有四個測試用例 2.由TestLoder載入TestCase到TestSuite 3.然後由TextTestRunner來執行TestSuite,執行的結果儲存在TextTestResult中。
說明: a:通過命令列或者unittest.main()執行時,main會呼叫TextTestRunner中的run來執行,或者可以直接通過TextTestRunner來執行用例
b:Runner執行時,預設將結果輸出到控制檯,當然也可以定義其他的輸出方式,如檔案儲存或者網頁顯示。
示例
- 首先要有待測試的類或者函式: foo_.py
# -*- encoding:utf-8 -*-
def foo_1():
#To do something
pass
def foo_2():
#To do something
pass
2.寫測試用例: test_foo_.py
# -*- encoding: utf-8 -*-
import unittest
from foo_ import *
class TestFoo(unittest.TestCase):
"""Test foo functions"""
def setUp(self):
# do something before every test method
def test_foo_1(self):
"""test foo_1 function"""
#do something
def test_foo_2(self):
"""test foo_2 function"""
#do something
def tearUp(self):
# do something after every test method