我有一个具有许多实用程序功能的模块,其中大多数执行系统调用。一个示例是将文件复制到新目录并返回路径的函数。我正在为我的实用程序模块编写单元测试,并且正在使用mock。但是,在尝试模拟shutil.copy2
时,我的单元测试总是通过。
效用函数
import os
from shutil import copy2
def cp_and_return_path(src, dst):
"""copy a file to a destination and return the destination path."""
if os.path.isfile(src):
copy2(src, config.TMP_DIR)
return dst
和单元测试:在班级UtilsTest(unittest2.TestCase)
内。
import mock
import unittest2
from lib import utils
...
@mock.patch('utils.os')
@mock.patch('utils.copy2')
def test_cp_and_return_path(self, mock_copy, mock_os):
mock_os.path.isfile.return_value = False
utils.cp_and_return_path('file1', 'test/here')
self.assertFalse(mock_copy.called)
即使我将isfile.return_value
设置为True
,此测试也会通过。我是新来模仿,所以也许我错过了一些东西。