在python的llt測試中,需要保證覆蓋率,但是有乙個問題就是,python**本來就很短,乙個函式可能就幾行,而且工程**為了方便定位錯誤,會在函式的前後包圍try_except_else塊,這乙個塊就佔了幾行,如果沒乙個函式都無法覆蓋這個異常處理的塊,那麼覆蓋率將會受到很大的影響,這篇部落格演示如何用python模擬異常。
其實只需要知道mock有乙個side_effect的引數就很容易了,這個引數就是返回打樁函式的異常情況的。
import os
class classa():
def getnum(self):
return 0
def self_function(self):
try:
if self.getnum()==0:
print("test_self_function you are very good")
except:
print("test_self_function the except module")
else:
print("test_self_function the else module")
定義測試函式:
@patch("aa.classa.getnum")
def test_self_function(self,mock_getnum):
mock_getnum.side_effect = ioerror()
classa().self_function()
這樣執行這個測試函式就會**獲到異常。
當然這麼強大的函式不僅僅可以打樁自己寫的函式,甚至可以捕獲python的內建庫函式。
def python_function(self,path):
try:
if os.path.exists(path):
print(" test_python_function you are very good")
except:
print("test_python_function the except module")
else:
print("test_python_function the else module")
其測試函式:
@patch("os.path.exists")
def test_python_function(self,mock_exists):
mock_exists.side_effect = ioerror
classa().python_function("/you")
可以看到,這個地方也成功的捕獲到了異常。 python mock 模擬 介面
什麼是mock介面?mock通常是指,在測試乙個物件時,我們構造一些假的物件來模擬與其互動。而這些mock物件的行為是我們事先設定且符合預期。通過這些mock物件來測試物件在正常邏輯,異常邏輯或壓力情況下工作是否正常。引入mock最大的優勢在於 mock的行為固定,它確保當你訪問該mock的某個方法...
函式打樁原理 難重現問題定位「函式打樁」
authon baohaitao date 2016 11 25 目的 linux應用軟體執行過程 現難重現的無規律宕機,在core檔案中gdb中除錯沒有發現有價值資訊 這裡給出了另乙個思路 函式打樁。該方法特別適合於中小型嵌入式軟體。設計 2 增加乙個編譯項 編譯器自動在整個工程的所有函式體頭尾增...
Linux C 庫打樁技術
3.2.編譯命令 3.3.運 況和執行命令 3.4.說明 4.編譯時打樁 4.2.編譯命令和執行命令 4.3.運 況 4.4.說明 5.執行時打樁 5.2.編譯命令和執行命令 5.3.運 況 5.4.說明 6.參考資料 庫打樁技術,可以截獲對共享庫函式的呼叫。應用上可以如可以控制函式呼叫的輸入輸出值...