Python模拟shutils总是通过

时间:2015-03-22 14:43:27

标签: python mocking python-unittest

我有一个具有许多实用程序功能的模块,其中大多数执行系统调用。一个示例是将文件复制到新目录并返回路径的函数。我正在为我的实用程序模块编写单元测试,并且正在使用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,此测试也会通过。我是新来模仿,所以也许我错过了一些东西。

0 个答案:

没有答案