使用Mock做Python單元測試

大家都知道當(dāng)我們測試一些復(fù)雜依賴其它系統(tǒng)的方法時Mock是很重要的手段,比如說下面的function A它的結(jié)果是依賴于function B的返回結(jié)果的:

def A():
? ? ret = B()
? ? if ret:
? ? ? ? return Ture
? ? else:
? ? ? ? <error handling>
? ? ? ? return False

假設(shè)function B很費時間,最致命的是B來自其它模塊你有可能不能隨心所欲地測試function A的所有分支——因為有想要B按你的要求輸出結(jié)果測試數(shù)據(jù)將很難準(zhǔn)備,這個時候Mock就可以幫到你了!

from mock import patch, MagicMock
@patch('B')
def test_function_A(self, mock_B):
? ? mock_B.return_value = True
? ? self.assertEqual(True, A())

看到?jīng)],使用Mock, 你可以直接設(shè)定B的返回值,從此測試function A的時候你不用再費心讓function B返回你想要的結(jié)果!
? ?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,973評論 19 139
  • 功能介紹 好的編碼習(xí)慣都應(yīng)該為每一行代碼做覆蓋測試,但有些時候代碼處理的是從網(wǎng)絡(luò)上獲取的內(nèi)容,或者設(shè)備的返回,比如...
    羽風(fēng)之歌閱讀 15,714評論 1 15
  • Startup 單元測試的核心價值在于兩點: 更加精確地定義某段代碼的作用,從而使代碼的耦合性更低 避免程序員寫出...
    wuwenxiang閱讀 10,154評論 1 27
  • 1.WAS IT A CAR OR A CAT I SAW.. 'WASITACARORACATISAW'.. T...
    逆塵閱讀 3,056評論 1 16
  • 文/欣欣熳 成功是我們每個人都熱切渴望的。我們都期待活成那個自己想要的樣子,有一個豐盈的人生。 那如何才能擁有一個...
    欣欣熳閱讀 589評論 0 1