在課堂內部,我使用VK API。在測試過程中,我在API中使用MagicMock來模擬授權此類使用:如何添加虛擬方法
vk.Session = MagicMock(name='session', return_value=None)
vk.API = MagicMock(name='api')
mock_vk_values = [{'uid': user.vk_uid}]
vk.API.users.get = MagicMock(name='uid', return_value=mock_vk_values)
但是,該類中,我使用這個API來獲取用戶的UID:
class VKAuth(object):
def __init__(self, access_token, user):
...
self.session = vk.Session(access_token=access_token)
self.api = vk.API(self.session)
...
def authenticate(self):
try:
vk_uid = self.api.users.get()[0]['uid']
在此它會得到一個錯誤:
*** AttributeError: 'NoneType' object has no attribute 'users'
如何嘲笑這東西是否正確?
謝謝!
你爲什麼要嘲笑它,如果你希望它返回用戶返回無? –
添加users.get屬性的正確方法是什麼? 我試圖添加:mock_vk_values = [{'uid':user.vk_uid}] \ attrs = {'users.get.return_value':mock_vk_values} \ vk.API = MagicMock(name ='api',** attrs)但它沒有幫助。 – paus
我添加了一些邏輯來開始我試圖使用。 – paus