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

Windows+Python3.13环境下pyfakefs创建模拟文件夹失败,setUp正常但测试方法报错求助

Windows+Python3.13环境下pyfakefs创建模拟文件夹失败,setUp正常但测试方法报错求助

先给你拆解下问题:你遇到的AttributeError: 'WindowsPath' object has no attribute 'startswith',本质是pyfakefs在处理路径时,误把Path对象当成字符串来调用startswith方法了——但Python的WindowsPath对象本身并没有这个字符串方法,所以直接报错了。

结合你的环境(Python3.13+Windows)和代码表现,大概率是pyfakefs版本没跟上Python3.13的适配节奏(毕竟Python3.13刚发布不久),不过也有几个实用的解决方向,给你一步步说:

解决办法一:优先更新pyfakefs到最新版

先打开终端执行更新命令,新版pyfakefs通常会适配最新Python版本的路径处理逻辑:

pip install --upgrade pyfakefs

更新后再跑测试,大概率能直接解决这个问题。

解决办法二:手动把Path对象转成字符串

如果暂时没法更新,或者更新后还是有问题,可以在调用create_dir时,把Path路径转成字符串形式,避开pyfakefs对Path对象的兼容问题:

def test_top_folders_exist(self):
    # 将Path对象转为字符串后传入
    self.fs.create_dir(str(Path.cwd() / "gdd"))

解决办法三:用pyfakefs自带的虚拟工作目录

你还可以直接使用pyfakefs模拟出来的当前工作目录,而不是调用系统的Path.cwd(),这样更贴合虚拟文件系统的逻辑,也能避免路径类型冲突:

def test_top_folders_exist(self):
    # 使用fake fs提供的虚拟cwd
    self.fs.create_dir(self.fs.getcwd() / "gdd")

另外提个小建议:你的setUp方法里可以直接用cls.fs代替cls.fake_fs(),写法更简洁,同时也建议把路径转成字符串,避免后续再踩同样的坑:

@classmethod
def setUp(cls):
    cls.setUpClassPyfakefs()
    cls.fs.create_dir(str(Path.cwd() / "gamedev_eco"))
    cls.fs.cwd = str(Path.cwd() / "gamedev_eco")

你可以先试更新版本的方法,这是最根本的解决方案,如果还不行再试试后面的临时办法~

备注:内容来源于stack exchange,提问作者wavesinaroom

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 12:54:28