You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

递归遍历文件夹方法的Python单元测试递归错误排查

递归遍历单元测试递归溢出问题排查思路
  • 检查os.path.isdir()的Mock返回逻辑:如果这个Mock对所有传入的路径都返回True,递归会无限进入子目录调用,直接触发栈溢出。要给它设置路径区分的返回值,比如用side_effect,对测试用的根目录返回True,对模拟的子文件路径返回False,对需要递归的子目录返回True但仅到有限层级。
  • 排查os.listdir()的Mock返回内容:如果返回值包含.或..,且代码没过滤这些特殊目录,加上isdir对它们返回True,就会无限递归遍历自身目录。确保Mock返回的是干净的子项(比如['subdir', 'file1.txt']),没有循环引用的目录项。
  • 验证os.path.join()的Mock行为:如果这个Mock没有正确生成唯一子路径,比如不管参数是什么都返回同一个固定路径,会导致每次递归都处理同一个目录,isdir一直返回True就会无限循环。要让join的Mock能正确拼接父路径和子项,生成不同的唯一路径(比如传入/test和subdir时返回/test/subdir)。
  • 跟踪递归调用的实际参数:在测试里临时加打印,或者给Mock的side_effect加日志,看看每次调用get_contents时传入的路径是不是重复的。如果重复出现同一个路径,基本可以锁定是路径生成或isdir判断的Mock配置错误。
  • 确认模拟的目录结构是有限层级:比如测试时模拟最多2层目录,第三层就设为文件,确保递归能正常终止,不要模拟无限嵌套的目录结构。

内容的提问来源于stack exchange,提问作者sunrayk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 01:17:19