测试操作方法

时间:2016-06-27 14:53:05

标签: python unit-testing

如何测试python中提供的os模块方法。例如,您如何测试os.mkdir的使用?

def create_folder(self):
    os.mkdir("/parentFolder/newFolder")

可以用什么来测试这种方法?

此方法将包含测试用例,例如

  • 验证文件夹已创建

  • 创建文件夹的权限不足

  • 空间不足以创建文件夹

2 个答案:

答案 0 :(得分:2)

在单元测试create_folder时,您测试os.mkdir。这有两个原因:

  1. 它是外部库的一部分(在本例中是标准库,但第三方库的情况也是如此),因此应该由该库的测试套件覆盖;以及

  2. 即使它是您的代码库的一部分,它也是与被测试代码库不同的单位。

  3. 此外,值得注意的是,正如user2393256's answer所示,您对此进行的测试可能会使用来自同一外部库的其他功能 - 如果测试失败,您是否认为os.mkdir没有工作还是os.path.isdir不起作用?

    从测试create_folder的角度来看,真正重要的是正确地与交互。我会嘲笑os.mkdir(使用例如unittest.mock)并检查是否正在使用适当的路径调用它。您还可以更改模拟的返回值和副作用,允许您模拟权限或空间不足等内容,并测试应用程序对此的响应,而无需以某种方式将该环境设置为真实。在测试调用create_folder的其他功能单元时,我会完全模拟create_folder,因为它是经过测试和信任的单元。

    除了单元测试之外,您还可以进行集成测试级别,这可以确保应用程序的所有部分正确地协同工作。此时,您将测试整体功能,例如您可以保存文件,然后将其重新加载,而不是像“这样的细节创建文件夹?”

    最后,特别是对于标准库功能,您必须对语言本身进行一定程度的信任(即使不是直接测试,至少是已经使用过的数千个程序!)和工作。

答案 1 :(得分:0)

要检查目录是否已创建,您可以使用

os.path.isdir()

关于许可:有一个说成语的蟒蛇成语

  

要求宽恕比获得许可更容易

在这种情况下,我会尝试创建文件夹并捕获可能抛出的异常。