大家都知道當(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é)果!
? ?