2016-09-26 157 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): ...