小编kvb*_*kvb的帖子

Python Mock在一个类中修补多个方法

我试图在一个类中修补多个方法。这是我的简化设置

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)

python python-mock python-unittest

3
推荐指数
3
解决办法
7896
查看次数

标签 统计

python ×1

python-mock ×1

python-unittest ×1