Python 单元测试用 Fake 替换 Class

Python Unit Test Replace Class with Fake

我试图在我的 Python 单元测试中用假的 class 替换 class:

import unittest
from unittest.mock import patch
from foobar import compute_bfux

def test_compute_bfux_succeed(self):
    paramA, paramB, expected_result = 8, 11, 63

    with patch('utility.functions') as fake:
        fake = FakeUtilityFunctions()
        actual_result = compute_bfux(paramA, paramB)
    
    self.assertEqual(actual_result, expected_result)

在上面,FakeUtilityFunctions 是我实际写的 class。我想在 compute_bfux.

中将“FakeUtilityFunctions”class 换成“utility.functions”

不幸的是,上面的方法不起作用。在 compute_bfux 中,我得到了一个 MagicMock,这不是我想要的。我知道 utility.functions 正在被 MagicMock 换掉,因为当 运行 我的测试...

时我最终遇到以下错误

TypeError: '<=' not supported between instances of 'MagicMock' and 'MagicMock'

有人看到我想去的地方可以告诉我我在哪里搞砸了吗?

这不起作用:

with patch('utility.functions') as fake:
    fake = FakeUtilityFunctions()

相反,这样做:

with patch('utility.functions', wraps=FakeUtilityFunctions()):