我有以下结构:
# 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
。您必须修补正在处理的模块的对象。