假设我有以下功能,我需要对其进行单元测试:
def move_files_to(files, path):
for file in files:
os.rename(file, path + "/" + file)
我对这个话题的看法:
模拟 os.rename 不会导致任何结果,另一方面,拥有文件并重命名它们将是“执行 I/O”,这应该在单元测试中避免。如果我错了,请纠正我。测试在这里有意义吗?
最佳答案
不需要测试os.rename
,但是您的代码需要测试。在您的特定情况下,最简单的方法是修补 os.rename
:
from unittest.mock import patch
def test_move_files():
files = ['a.txt', 'b.txt']
path = 'old'
expected = [(('a.txt', 'old/a.txt'),),
(('b.txt', 'old/b.txt'),)]
with patch('os.rename') as rename:
move_files_to(files, path)
assert rename.call_args_list == expected
关于python - Python中 "renaming files"的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56760486/