我有这个类和功能,可以简单地将文件从一个地方复制到另一个地方。由于我是Mocking的新手,所以我不知道如何正确测试它,将非常感谢您的协助(注意CFG_Dict是我传递值的字典),请注意这是一个示例,我有 init ,用于此类中的多个功能。
from shutil import copy
import os
from pathlib2 import Path
class FileMover(object):
def __init__(self, cfg_dict):
self.copyto = str(Path(cfg_dict['GENERAL']['filecopylocation']))
self.worklocation = str(Path(cfg_dict['GENERAL']['fileworklocation']))
def run_file_mover(self, filename):
filename = str(Path(filename))
try:
copy(filename, self.copyto)
except ValueError:
raise
return str(Path('%s/%s' % (self.copyto, os.path.basename(filename))))
编辑:
我做了一些修改,这是我的新测试代码,
class TestMover(TestCase):
def test_file_move(self):
cfg_test = {'GENERAL': {'filecopylocation': '/test/temp/', 'fileworklocation': '/test/'},
'SFTP': {'sftpserver': 'localhost', 'sftpport': '22', 'sftpuser': 'test', 'sftppw': 'test', 'sftpdestination': 'test'}}
with mock.patch('generate_reports.tools.file_mover.copy') as test_copy_function:
FileMover(cfg_test).run_file_mover("foo")
assert test_copy_function.called