如何修补在 class 中调用的模块方法?

How to patch a module method that is called within a class?

我有以下结构:

# create.py
import sshHandler
class Create:
    def __init__(self):
        self.value = sshHandler.some_method()

# sshHandler.py
def some_method():
    return True

如果我尝试修补 sshHandler.some_method 它不会按预期工作

from unittest import TestCase
from unittest.mock import patch
import create
class TestCreate(TestCase):
    @patch("sshHandler.some_method")
    def test_create(self, mock_ssh):
        mock_ssh.return_value = False
        c = create.Create()
        # c.value = True but should be false

我正在寻找的结果是 some_method 也会在创建中进行修补(并且 return 为假)。如果我只是在 test_create 的上下文中调用 some_method 它会按预期工作。如何修复该补丁,使其在访问 sshHandler 时在 Create class 中也处于活动状态?

我看到了这个问题 Why python mock patch doesn't work?,但是那里提供的信息无法解决我的问题。

你打错了模块。而是修补 sshHandler.some_method 补丁 create.sshHandler.some_method。您必须修补您正在处理的模块的对象。