gpt4 book ai didi

Python 模拟 assert_called 不工作

转载 作者:太空宇宙 更新时间:2023-11-03 13:31:11 25 4
gpt4 key购买 nike

我能够成功地模拟一个函数,而且我确信没有调用原始函数。我在原始函数中添加了一个巨大的打印语句,当我模拟它时,不会调用此打印。当我重新打开模拟时,不会调用打印语句。

但是,我的 assert_called 失败了,说它从未被调用过。有没有人经历过这样的事情?

class FooTestCase(unittest.TestCase):

@mock.patch('MyObj.helper_function')
def test_simple(self, mock_hf):

my_obj = MyObj()

# internally, this class imports HelperModule
# and the method calls helper_function
my_obj.do_something()

mock_hf.helper_function.assert_called()

return

我的错误回复

AssertionError: Expected 'helper_function' to have been called.

更新我只是在断言之前添加了以下几行

    print mock_cw.method_calls
print mock_cw.mock_calls

method_calls 是一个空列表,而 mock_calls 是一个包含 1 项的列表

[call(arg1_expected_for_helper_fn, arg2_expected_for_helper_fn)]

断言仍然失败

最佳答案

通常这样的错误是因为没有修补正确的位置。尝试用这个修补对象本身:

@patch.object(MyObj, "helper_function")
def test_simple(mock_hf):
...

由于 MyObj 被(假设)导入到测试文件的顶部,这直接修补了该对象上的方法。

关于Python 模拟 assert_called 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46914078/

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