我正在尝试使用 Mock
来测试从检索设置的函数返回的结果:
def apply_delta_to_date(original_date):
delta = MySettings.get_delta()
result_date = original_date + timedelta(delta)
return result_date
在测试 apply_delta_to_date
函数时,我试图模拟对 MySettings.get_delta
的调用以模拟它返回特定结果:
class TestAppyDelta():
def setUp(self):
self.MySettings = Mock()
self.MySettings.get_delta = Mock(return_value=10)
def test_apply_delta(self):
result = apply_delta_to_date(today)
问题是我无法设法“模拟”对 MySettings.get_delta()
的函数调用,它位于我真正想要测试的函数内部。
如何在我正在测试的函数中模拟内部函数返回的结果?
最佳答案
你根本没有 mock 正确的事情。您所做的只是在您的测试类中定义一个 MySettings 属性。它永远不会被任何东西调用。
您需要在调用它的地方模拟对 MySettings 的引用。假设您要从名为 my_delta_module
的模块导入 apply_delta_to_date
:
@patch('my_delta_module.MySettings')
def test_apply_delta(self, mock_settings):
mock_settings.get_delta.return_value = 10
result = apply_delta_to_date(today)
关于Python 模拟 : Mocking a function inside the function I'm testing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57924201/