使用模拟

时间:2017-04-16 10:00:18

标签: python python-3.x unit-testing mocking python-unittest

如何在函数上使用mock.patch,因此我可以访问方法.assert_called等,同时我仍然可以保留函数的原始功能?

以下是示例代码:

from unittest import mock

def foo(arg):
    print(arg)

def tested():
    foo('hi')

@mock.patch('__main__.foo')
def test(foo):
    tested()
    foo.assert_called_once()

test()

我希望它测试foo函数是否只调用一次,但我仍然需要它来打印hi

1 个答案:

答案 0 :(得分:0)

喔。我已经解决了。我只需要将参数side_effect添加到装饰器: - )

像这样:

@mock.patch('__main__.foo', side_effect=foo)
def test(foo):
    ...