為什麼引入單元測試
單元測試:對軟體設計的最小單元進行正確性檢測的測試,將可能存在的錯誤在最小範圍內發現解決
單元測試的目的:發現模組內部邏輯,語法,演算法,功能的錯誤
單元測試方法:**級別測試和模組功能測試
**級別測試:
熟悉模組功能,內部邏輯與介面,編寫測試用例:
1. 介面測試:確保資料結構可用,例如資料庫,檔案,自定義資料結構
2. 資料結構測試,確保資料結構可用,例如資料庫、檔案、自定義資料結構
3. 邊界測試:對邊界值進行檢測
通常測試用例的編寫
例1://先編寫一段需要測試的**,add函式,支援兩個及以上的數字相加
def add(x,y,*arg):
x+=y
forval in arg:
x+=val
returnx
//測試用例:
//1.兩個數的相加
print(『add 2』,add(10,10) == 20)
//2.多個數的相加
print(『add 3』,add(10,20,10) == 40)
引入unittest測試框架
unittest:python內建的乙個單元測試模組,針對於python進行單元測試
unittest完整測試用例:
1. 測試環境準備
2. 測試**執行
3. 測試環境還原
4. 測試結果分析
使用unittest測試add,sub,sum函式:
例:import unittest
//匯入要測試的函式方法
from count import add,sub
//繼承
unittest
的testcase
類class unittestadd(unittest.testcase)://
初始化測試環境,此測試中不需要相關初始化動作
def setup(self):
pass
//恢復現場,此測試中不需要相關恢復動作
def teardown(self):
pass
//測試
def runtest(self)
print(add(10,20) ==30)
//測試
sub類
class testsub(unittest.testcase)
def runtest(self)
print(sub(10,5) == 5)
if __name__==』_main_』
demo_add = unittestadd();
//run
方法:先執行
setup
,然後runtest
,最後teardown
demo_add.run()
demo_sub =testsub()
demo_sub.run()
使用unittest編寫測試用例
要測試的**:
class count(object):
def add(self,x,y):
return x+y
def sub(self,x,y):
return x-y
if__name__ == 』_main_』:
c= count();
測試模組:
import unittest
from count import count
class testcount(unittest.testcase)
defsetup(self):
//初始環境時,例項化測試物件
self.obj = count()
defteardown(self):
//恢復環境時,將物件置為none
self.obj= none
def add_test(self):
print(self.obj.add(10,20) == 30)
def sub_test(self):
print(self.obj.sub(10,5) == 5)
if __name__ == 『_main_』:
//傳入需要測試的方法,就可以實現乙個類中測試兩個方法
demo_count_add =testcount (『add_test』)
demo_count_add.run ()
demo_count_sub = testcount(『sub_test』)
demo_count_sub.run()
引入測試集:
unittest.testsuite:測試用例的測試集,存放測試用例的容器
新增測試用例到測試集中:addtest(self,test)—新增乙個測試用例
addtests(self,tests)—新增多個測試用例
__init__方法直接新增測試用例
測試類:
import unittest
from count import count
class testcount(unittest.testcase)
defsetup(self):
self.obj = count()
defteardown(self):
self.obj= none
def add_test(self):
print(self.obj.add(10,20) == 30)
def sub_test(self):
print(self.obj.sub(10,5) == 5)
def get_suite():
demo_count_add = testcount (『add_test』)
demo_count_sub = testcount(『sub_test』)
//建立乙個測試集
suite = unittest.testsuite()
//新增測試用例到測試集中
suite.add(demo_count_add)
suite.add(demo_count_sub)
if __name__ == 『_main_』:
s = get_suite()
//輸出測試集的測試個數
print(s.counttestcases())
//要執行測試集,必須建立
runner
物件runner = unittest.texttestrunner()
runner.run(s)
單元測試1
總結應該盡早地進行軟體單元測試。應該保證單元測試的可重複性。盡可能地採用測試自動化的手段來支援單元測試活動。單元模組被正確編碼 資訊能否正確地流入和流出單元 在單元工作過程中,其內部資料能否保持其完整性,包括內部資料的形式 內容及相互關係不發生錯誤,也包括全域性變數在單元中的處理和影響。在為限制資料...
單元測試1
python為我們提供了unittest包用來進行單元測試,還是以count這個類為例。class count def init self,a,b self.a a self.b b defadd self return self.a self.b下面就對count進行單元測試。import uni...
IOS單元測試(1)
本文不討論單元測試是什麼,或者它之於乙個工程的利弊,我認為單元測試是乙個開發者保證產出 質量的有效工具。本文從使用者的角度對比當下比較流行的兩款單元測試框架,給大家提供 閱讀器ios開發 作者高嘉峻 微博 gaosboy segmentfault.com聯合創始人,杭州ios開發者沙龍發起人,資深i...