2016-09-26 155 views
0

剛拿起蟒蛇單元測試模擬不是嘲笑

def test_load(self): 
    with patch('base.data.load.loadEngine.libLoad.extractDBData', autospec=True, return_value=None): 
    #libLoad.extractDBData = MagicMock(return_value=[ {'x':'value1'} ]) 
     self.assertEqual(
      load(loadName='MyLoadName', configName='PROD', sqlName='sampleSQL', loginName='loginName', password='password'), 
      [{'x': 'value'}]) 

在我的代碼,加載調用另一個模塊base.data.load.loadEngine.libLoad.extractDBData,我想更換方法。就我而言,補丁不會發生。

+0

它實際上是執行方法base.data.load.loadEngine.libLoad.extractDBData –

+0

我認爲我們需要更多的信息來跟蹤此下來...例如load函數看起來是什麼樣,'extractDBData'是如何在'load'的命名空間中導入的? – mgilson

+0

在加載時,導入是這樣的:-------- from base.data.load.loadEngine import libLoad as fl ..... and further down .... .fl.extractDBData –

回答

1

你需要修補的方法的相對路徑:

with patch('path.to.your.pythonfile.fl.extractDBData', autospec=True, return_value=None): ...