我对软件测试很陌生。我想知道如何在python中编写与文件相关的函数的单元测试。例如,如果我有如下的文件复制功能。
def copy_file (self):
if not os.path.isdir(dest_path):
os.makedirs(dest_path)
try:
shutil.copy2(src_path, dest_path)
except IOError as e:
print e
关于测试上述功能,我该怎么做?我应该断言什么(目录,文件内容,例外)?
答案 0 :(得分:1)
您可以依赖shutil.copy2正确复制内容。您只需要测试您的代码。在这种情况下,如果目录不存在,它会创建目录,并且它会吞下IOErrors。
不要忘记清理。 ;)
答案 1 :(得分:1)
我认为,你可以从test_shutil本身获得一些线索,看看它是如何测试复制功能的。即它正在移动文件并测试是否存在使用另一个模块。标准shutil.copy与包装器的行为差异在于处理目标(如果它尚不存在)。在shutil.copy2中,如果目标尚不存在,则会创建一个从源移动的文件,在您的情况下,它不是文件,但会创建目标目录并将源移动到该文件中。因此编写测试目标不存在,并确保在包装器运行后,目标仍然是一个目录,并且它包含shutil移动的文件。
答案 2 :(得分:0)
考虑您对方法的要求,例如:
null
或目录的非法字符),则该方法应报告错误。这些只是一些想法。不要提出任何可能的要求,也不要测试太多,请记住想要用这种方法做什么。如果它是私有的或仅在您自己的代码中使用,则可以缩小范围,但如果您提供公共API,则必须确保任何输入都具有已定义的结果(可能是错误信息)。