# 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
,调用自定义处理程序,如何对其进行单元测试?
我尝试通过在临时目录中创建临时文件,然后限制目录的权限来实现此目的。不幸的是,撞毁了测试跑者。寻找更优雅的解决方案。
答案 0 :(得分:1)
据推测,您并未测试os.walk
,但使用os.walk
的函数已正确设置其错误处理程序并且正确处理OSError
。测试中有两个问题。
OSError
?您只需要生成任何错误,而不是试图让os.walk
生成OSError
。而不是通过os.walk
测试错误处理程序,您可以直接获取它。
首先,使用您知道不存在的路径拨打os.walk
。检查错误处理程序是否已运行。您正在测试的是正确的错误处理程序运行。
对于第二个,直接使用OSError
对象调用错误处理程序。您正在测试的是错误处理程序处理OSError
对象。