我正在努力模仿一个对象方法中的构造函数调用,这个对象方法是由一个“过程”函数调用的
为了更好地理解,以下是我的代码的简短版本:
from src.b.oee_retriever import OeeRetriever
oee_retriever = OeeRetriever()
def handler(event, context):
return oee_retriever.call_repo()
from src.b.oee_repo import OeeRepo
class OeeRetriever():
oee_repo = None
def __init__(self):
self.oee_repo = OeeRepo()
print('Type: ' + str(type(self.oee_repo)))
def call_repo(self):
print('calling repo')
return self.oee_repo.do()
现在我只想测试lambda_function.handler()
函数,并且我想模拟oee_retriever.__init__()
中的构造函数调用OeeRepo()
我试过:
from unittest import TestCase
from unittest.mock import Mock, patch
from src.b.lambda_function import handler
class OeeLambdaFunctionTest(TestCase):
@patch('src.b.oee_repo.OeeRepo')
def test_bar(self, oee_repo):
my_mock = Mock()
my_mock.do.return_value = 'nope'
oee_repo.return_value = my_mock
result = handler(None, None)
self.assertEqual(result, 'nope')
模拟结果应该是'nope',但实际函数oee_repo.do()
被调用。
我也尝试使用@patch('src.b.oee_retriever.OeeRepo')
,但在本例中也调用了oee_repo.do()
如何模拟OeeRepo()
构造函数调用?
目前没有回答
相关问题 更多 >
编程相关推荐