4
def func_b(**kwargs):
    return something


def func_a(request,*args,**kwargs):
    //do something
    b = func_b(**kwargs)
    //do something
    return something

我正在编写 UnitTest,func_a但我想伪造func_b在 django 中使用模拟或任何类似于模拟的输出。只是意味着我只想伪造输出func_b并总是想从func_b测试用例中返回一些静态值。有什么办法吗?

4

1 回答 1

1

您应该使用mock.patch并指定return_value. func_b()这是一个示例,我们正在动态修补to的返回值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'")
于 2013-09-22T14:35:20.357 回答