def move_file(self, source, dest, sync=True):
"""
move file from source to dest
:param source:
:param dest:
:param sync: if sync=Ture, block util move command is over
:return:
"""
if os.path.exists(dest):
os.remove(dest)
if sync:
command = 'mv ' + source + ' ' + dest
self.__sync_exec_command(command)
else:
shutil.move(source, dest)
比如以上这个方法,我想用 unittest 对他进行测试,需要怎么做呢?
1
xiuc001 OP ```
def test_move_file(self): supervisord = DummySupervisor() interface = self.makeOne(supervisord) curdir = os.path.abspath(os.curdir) os.system('touch ' + curdir + '/test.log') interface.move_file(curdir + '/test.log', curdir + '/test1.log') self.assertEqual(True, os.path.exists(curdir + '/test1.log')) ``` 我现在是这么测试的,不知道符不符合规范 |
2
zjuhwc 2016-12-28 00:19:31 +08:00 via iPhone 1
1. 测试文件可以用临时目录, python 应该有个方法可以判断系统临时目录,搜下
2. unittest 有 assertTrue 方法,不需要 assertEqual 3. 如果要测多个场景,可以用单元测试的 setup 函数做初始化,还有个对应的函数做数据清理(比如删掉你生成的临时文件),避免副作用 4. 直接使用 os.system ,字符串拼接命令有风险,可以用 subprocess : https://docs.python.org/2/library/subprocess.html |
3
fzleee 2016-12-28 08:34:56 +08:00 via iPhone
试试 mock
|