2017-04-16 136 views
1

如何在功能上使用mock.patch,因此我可以訪問方法.assert_called等,同時我仍然可以保留函數的原始功能?Python中的部分補丁與模擬

下面是示例代碼:

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

回答

0

哦。我已經解決了。我心中已經只需要參數side_effect添加到裝飾:-)

像這樣:

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