我试图在一个类中修补多个方法。这是我的简化设置
Hook.py定义为
class Hook():
def get_key(self):
return "Key"
def get_value(self):
return "Value"
Run Code Online (Sandbox Code Playgroud)
HookTransfer.py定义为
from Hook import Hook
class HookTransfer():
def execute(self):
self.hook = Hook()
key = self.hook.get_key()
value = self.hook.get_value()
print(key)
print(value)
Run Code Online (Sandbox Code Playgroud)
我想模拟Hook类中的方法get_key和get_value。以下作品,即打印New_Key和New_Value
from HookTransfer import HookTransfer
import unittest
from unittest import mock
class TestMock(unittest.TestCase):
@mock.patch('HookTransfer.Hook.get_key', return_value="New_Key")
@mock.patch('HookTransfer.Hook.get_value', return_value="New_Value")
def test_execute1(self, mock_get_key, mock_get_value):
HookTransfer().execute()
if __name__ == '__main__':
unittest.main()
Run Code Online (Sandbox Code Playgroud)
但是,事实并非如此。它打印<MagicMock name='Hook().get_key()' id='4317706896'>并<MagicMock name='Hook().get_value()' id='4317826128'>
from HookTransfer import HookTransfer
import unittest
from unittest import mock
class TestMock(unittest.TestCase):
@mock.patch('HookTransfer.Hook', …Run Code Online (Sandbox Code Playgroud)