【发布时间】:2023-04-09 15:53:01
【问题描述】:
我正在尝试修补由我尝试测试的类实例化的类,但它不起作用。我已经阅读了各种文档,但仍然没有发现我做错了什么。这是代码sn-p:
在tests/Test.py:
from module.ClassToTest import ClassToTest
class Test(object):
@mock.patch('module.ClassToPatch.ClassToPatch', autospec = False)
def setUp(self, my_class_mock):
self.instance = my_class_mock.return_value
self.instance.my_method.return_value = "def"
self.class_to_test = ClassToTest()
def test(self):
val = self.class_to_test.instance.my_method() #Returns 'abc' instead of 'def'
self.assertEqual(val, 'def')
在module/ClassToPatch.py:
class ClassToPatch(object):
def __init__(self):
pass
def my_method(self):
return "abc"
在module/ClassToTest.py:
from module.ClassToPatch import ClassToPatch
class ClassToTest(object):
def __init__:
# Still instantiates the concrete class instead of the mock
self.instance = ClassToPatch()
我知道在这种情况下我可以轻松地注入依赖项,但这只是一个示例。此外,我们对每个文件策略使用单个类,文件的命名与类类似,因此导入命名很奇怪。
【问题讨论】:
-
试试@mock.patch('module.ClassToTest.ClassToPatch', autospec = False)
-
以后,请将您的示例代码设为MCVE;您发布的代码中存在多个错误,您不能依赖对问题足够熟悉的人来立即发现问题并提供解决方案。
-
好的,我会注意的
标签: python python-3.x python-unittest