44

我尝试通过用以下方式装饰测试方法来修补提供程序类@patch

class TestMyUnit(unittest.TestCase):
...
@patch(provider.Provider,autospec=True)
def test_init(self, mock_provider):
    pass

但是,当我运行测试时,出现错误:

*@patch(provider.Provider)*  
*File "build\bdist.win32\egg\mock.py", line 1518, in patch*  
*getter, attribute = \_get\_target(target)*  
*File "build\bdist.win32\egg\mock.py", line 1367, in \_get\_target*  
*target, attribute = target.rsplit('.', 1)*  
*AttributeError: class Provider has no attribute 'rsplit'*  
*ERROR: Module: test\_my\_unit could not be imported (file: C:\dev\src\test\_my\_unit.py).*

有任何想法吗?

4

1 回答 1

70

使用字符串而不是类。

@patch('provider.Provider', autospec=True)
def test_init(self, mock_provider):
    pass
于 2012-05-24T17:46:38.320 回答