我編寫單元測試和測試我想模擬一個已經存在的對象的方法。 但看起來像asyncio corutines它並不像看起來那麼簡單。 我試圖使用MagickMock,但它不起作用。沒有錯誤或異常,但通過調試器,我可以看到f()永遠不會被調用。模擬已經實例化的對象的方法
我的測試和對象我想修補這個樣子的:
from unittest.mock import patch, MagicMock
class Service(object):
async def callback_handler(self, msg):
pass
async def handle(self, msg):
await self.callback_handler(msg)
class TestCase(object):
def setUp(self):
self.service = Service()
@patch('module.msg')
def test_my_case(self, msg_mock):
f_was_called = False
async def f():
global f_was_called
f_was_called = True
self.service.callback_handler = MagicMock(wraps=f) # here I try to mock
await self.service.handle(msg_mock)
assert f_was_called is True
我怎樣才能修補程序已經實例化對象的方法與一些自定義的? corutines有一些問題嗎?
你的問題是提供MCVE的有點短。在複製粘貼代碼後,我遇到了一些錯誤:1.在非協同函數'test_my_case'中使用'await' 2.缺少定義'msg()'的'module.py'。我試圖解決這些錯誤,盡我所能理解,但如果你改善你的問題會更好。 – Leon