'@patch decorator cannot set Provider

I tried patching a provider class by decorating a test method with @patch:

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

However, when I run the test, I get the error:

*@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).*

Any ideas?



Solution 1:[1]

Use a string instead of the class.

@patch('provider.Provider', autospec=True)
def test_init(self, mock_provider):
    pass

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 XORcist