# my_module.py
def walk_error_handler(os_error_instance):
logger.error(...)
for root, dirs, files in os.walk(path, onerror=walk_error_handler):
...
如何对 os.walk
进行单元测试,如果它遇到 OSError
,调用自定义处理程序?
我尝试通过在临时目录中创建一个临时文件,然后限制该目录的权限来实现这一点。不幸的是,这使测试运行器崩溃了。寻找更优雅的解决方案。
最佳答案
大概您不是在测试 os.walk
,而是使用 os.walk
的函数已经正确设置了它们的错误处理程序并且它处理了一个 OSError
正确。测试提出了两个问题。
- 函数是否调用了正确的错误处理程序?
- 错误处理程序是否正确处理了
OSError
?
与其尝试让 os.walk
生成 OSError
,您只需要它生成任何错误。而不是通过 os.walk
测试错误处理程序,您可以直接获取它。
首先,调用 os.walk
一些你知道不存在的路径。检查错误处理程序是否运行。您要测试的只是正确的错误处理程序运行。
对于第二种情况,直接使用 OSError
对象调用错误处理程序。您要测试的只是错误处理程序处理 OSError
对象。
关于python - 如何对 os.walk 触发错误处理程序进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42703412/