如何测试python中提供的os
模块方法。例如,您如何测试os.mkdir
的使用?
def create_folder(self):
os.mkdir("/parentFolder/newFolder")
可以用什么来测试这种方法?
此方法将包含测试用例,例如
验证文件夹已创建
创建文件夹的权限不足
空间不足以创建文件夹
答案 0 :(得分:2)
在单元测试create_folder
时,您不测试os.mkdir
。这有两个原因:
它是外部库的一部分(在本例中是标准库,但第三方库的情况也是如此),因此应该由该库的测试套件覆盖;以及
即使它是您的代码库的一部分,它也是与被测试代码库不同的单位。
此外,值得注意的是,正如user2393256's answer所示,您对此进行的测试可能会使用来自同一外部库的其他功能 - 如果测试失败,您是否认为os.mkdir
没有工作还是os.path.isdir
不起作用?
从测试create_folder
的角度来看,真正重要的是正确地与交互。我会嘲笑os.mkdir
(使用例如unittest.mock
)并检查是否正在使用适当的路径调用它。您还可以更改模拟的返回值和副作用,允许您模拟权限或空间不足等内容,并测试应用程序对此的响应,而无需以某种方式将该环境设置为真实。在测试调用create_folder
的其他功能单元时,我会完全模拟create_folder
,因为它是经过测试和信任的单元。
除了单元测试之外,您还可以进行集成测试级别,这可以确保应用程序的所有部分正确地协同工作。此时,您将测试整体功能,例如您可以保存文件,然后将其重新加载,而不是像“这样的细节创建文件夹?”
最后,特别是对于标准库功能,您必须对语言本身进行一定程度的信任(即使不是直接测试,至少是已经使用过的数千个程序!)和工作。
答案 1 :(得分:0)
要检查目录是否已创建,您可以使用
os.path.isdir()
关于许可:有一个说成语的蟒蛇成语
要求宽恕比获得许可更容易
在这种情况下,我会尝试创建文件夹并捕获可能抛出的异常。