django 单元测试用例中的假子函数(模拟)


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'")

最新更新