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



我有以下结构:

# 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也将在create中进行修补(并返回false(。如果我只是在test_create的上下文中调用some_method,它会按预期工作。如何修复补丁,使其在访问sshHandler时也在Create类中处于活动状态?

我看到这个问题为什么python mock补丁没有';不起作用?,但无法用那里提供的信息解决我的问题。

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

最新更新