测试 os 方法



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

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

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

此方法将具有测试用例,例如

  • 验证文件夹是否已创建

  • 权限不足,无法创建文件夹

  • 空间不足,无法创建文件夹

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

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

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

此外,值得注意的是,正如 user2393256 的答案所证明的那样,您对此的测试可能会使用同一外部库中的其他功能 - 如果测试失败,您是否得出结论os.mkdir不起作用或os.path.isdir不起作用?

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

除了单元测试之外,您还将进行一定程度的集成测试,以确保应用程序的所有部分正确协同工作。此时,您将测试整体功能,例如,您可以保存文件,然后重新加载它,而不是像"文件夹是否已创建?

最后,特别是对于标准库功能,你必须对语言本身进行测试(即使不是直接的,至少已经被成千上万的程序已经使用它!)并且工作有一定程度的信任。

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

os.path.isdir()

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

请求

宽恕比请求许可更容易

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

最新更新