在python中测试文件相关的函数

时间:2011-01-19 10:15:49

标签: python file testing

我对软件测试很陌生。我想知道如何在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

关于测试上述功能,我该怎么做?我应该断言什么(目录,文件内容,例外)?

3 个答案:

答案 0 :(得分:1)

您可以依赖shutil.copy2正确复制内容。您只需要测试您的代码。在这种情况下,如果目录不存在,它会创建目录,并且它会吞下IOErrors。

不要忘记清理。 ;)

答案 1 :(得分:1)

我认为,你可以从test_shutil本身获得一些线索,看看它是如何测试复制功能的。即它正在移动文件并测试是否存在使用另一个模块。标准shutil.copy与包装器的行为差异在于处理目标(如果它尚不存在)。在shutil.copy2中,如果目标尚不存在,则会创建一个从源移动的文件,在您的情况下,它不是文件,但会创建目标目录并将源移动到该文件中。因此编写测试目标不存在,并确保在包装器运行后,目标仍然是一个目录,并且它包含shutil移动的文件。

答案 2 :(得分:0)

考虑您对方法的要求,例如:

  • 如果source_dir不存在或源或目标导演无法访问,该方法应报告错误
  • 如果不存在,则方法应报告create destination_dir,如果无法创建目标目录,则报告错误
  • 如果源目标或目标目录具有非法值(null或目录的非法字符),则该方法应报告错误。
  • 该方法应将所有文件从源目录复制到目标目录
    • 检查是否已复制所有文件
  • 该方法应替换现有文件(可能
    • 检查是否更换了现有文件

这些只是一些想法。不要提出任何可能的要求,也不要测试太多,请记住想要用这种方法做什么。如果它是私有的或仅在您自己的代码中使用,则可以缩小范围,但如果您提供公共API,则必须确保任何输入都具有已定义的结果(可能是错误信息)。