Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python newbie @patch decorator issue

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?

like image 289
bavaza Avatar asked May 24 '12 17:05

bavaza


1 Answers

Use a string instead of the class.

@patch('provider.Provider', autospec=True)
def test_init(self, mock_provider):
    pass
like image 63
XORcist Avatar answered Oct 14 '22 12:10

XORcist