Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
702 views
in Technique[技术] by (71.8m points)

mocking - 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 "builddist.win32eggmock.py", line 1518, in patch*  
*getter, attribute = \_get\_target(target)*  
*File "builddist.win32eggmock.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:devsrcest\_my\_unit.py).*

Any ideas?

question from:https://stackoverflow.com/questions/10742361/python-newbie-patch-decorator-issue

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Use a string instead of the class.

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...