def func_b(**kwargs):
return something
def func_a(request,*args,**kwargs):
//do something
b = func_b(**kwargs)
//do something
return something
我正在为 func_a
编写 UnitTest,但我想使用模拟或任何类似于 django 中模拟的东西来伪造func_b
的输出。简单地说,我只想伪造func_b
的输出,并且总是想从测试用例中的func_b
返回一些静态值。有什么办法可以做到这一点吗?
您应该使用 mock.patch
并指定return_value
。下面是一个示例,我们将 func_b()
的返回值修补为动态Fake value
:
from mock import patch
import unittest
def func_b():
return "Real value"
def func_a():
return "The result of func_b is '%s'" % func_b()
class MyTestCase(unittest.TestCase):
def test_fake_value(self):
with patch('test.func_b', return_value="Fake value") as mock_function:
self.assertEqual(func_a(), "The result of func_b is 'Fake value'")
上级:
with patch.object(module_name, 'func_b') as mock_function:
mock_function.return_value = "Fake value"
self.assertEqual(func_a(), "The result of func_b is 'Fake value'")