gpt4 book ai didi

Python 模拟 : Mocking a function inside the function I'm testing

转载 作者:行者123 更新时间:2023-12-05 00:47:11 26 4
gpt4 key购买 nike

我正在尝试使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com