1. 程式人生 > >python: 單元測試---unit test

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執行時,預設將結果輸出到控制檯,當然也可以定義其他的輸出方式,如檔案儲存或者網頁顯示。

示例

  1. 首先要有待測試的類或者函式: 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

Reference