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()):
我试图在我的 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
.
不幸的是,上面的方法不起作用。在 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()):