python mock 打樁丟擲異常

2021-08-25 05:17:19 字數 1471 閱讀 7265

在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.參考資料 庫打樁技術,可以截獲對共享庫函式的呼叫。應用上可以如可以控制函式呼叫的輸入輸出值...