2012-05-24 29 views
16

tôi đã cố gắng vá một lớp cung cấp bởi trang trí một phương pháp thử nghiệm với @patch:Python người mới @patch trang trí vấn đề

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

Tuy nhiên, khi tôi chạy thử nghiệm, tôi nhận được lỗi:

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

Ý tưởng nào?

Trả lời

22

Sử dụng chuỗi thay vì lớp học.

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

Cảm ơn. Người mới thực sự :-) – bavaza

+0

Cảm ơn bạn. Làm việc cho tôi! – Scit

+0

ahh, lỗi idiot :) thx để được trợ giúp – Regisz