你不能执行
.assert_called_once_with上的功能 香草 功能:首先需要用其包装
mock.create_autospec
装饰。因此,例如:
**import unittest.mock as mock**def rm(filename): helper(filename, 5)def helper(filename): pass**helper = mock.create_autospec(helper)**def test_unix_fs(mocker): mocker.patch('module.helper') rm('file') helper.assert_called_once_with('file', 5)
或更优雅:
import unittest.mock as mockdef rm(filename): helper(filename, 5)**@mock.create_autospec**def helper(filename): passdef test_unix_fs(mocker): mocker.patch('module.helper') rm('file') helper.assert_called_once_with('file', 5)
请注意,断言将失败,因为您只能通过调用断言
'file'。因此有效的测试将是:
import unittest.mock as mockdef rm(filename): helper(filename, 5)@mock.create_autospecdef helper(filename): passdef test_unix_fs(mocker): mocker.patch('module.helper') rm('file') helper. **assert_called_once_with('file')**
编辑 :如果函数在某个模块中定义,则可以将其包装在本地的装饰器中。例如:
import unittest.mock as mock**from some_module import some_function****some_function = mock.create_autospec(some_function)**def test_unix_fs(mocker): some_function('file') some_function.assert_called_once_with('file')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)