pyfakefs 实现了一个模拟 Python 文件系统模块的假文件系统。
项目描述
pyfakefs

pyfakefs实现了一个模拟文件系统,模拟Python文件系统模块。使用pyfakefs,您的测试在内存中的模拟文件系统上运行,而不接触真实磁盘。被测试的软件无需修改即可与pyfakefs一起工作。
Pyfakefs在每个测试开始时创建一个新的空内存文件系统,在测试期间替换真实文件系统。将pyfakefs视为为每个测试创建一个临时目录,但针对整个文件系统。
有几种方法可以实现这一点:在运行pytest时使用fs
固定装置,在使用unittest时使用fake_filesystem_unittest.TestCase
作为基类,使用fake_filesystem_unittest.Patcher
实例作为上下文管理器,或使用patchfs
装饰器。
pyfakefs适用于当前版本的Linux、Windows和macOS。
文档
本文件提供了pyfakefs的一般概述。还有更多内容
- 在Read the Docs的文档
- 发布说明显示了最新版本中的更改列表
用法
使用pyfakefs的最简单方法是使用pytest
中的fs
固定装置。有关其他测试场景、测试定制和使用便利函数的信息,请参阅用法文档。
功能
除了自动模拟大多数文件系统函数之外,pyfakefs还提供了一些附加功能
- 将文件和目录从真实文件系统映射到模拟文件系统
- 配置和跟踪文件系统大小
- 暂停和恢复修补,以便在测试步骤中使用真实文件系统
- 其他操作系统(Linux、macOS或Windows)的(有限)模拟
- 配置为在以root用户运行时表现得像非root用户
兼容性
pyfakefs与CPython 3.7及以上版本兼容,在Linux、Windows和macOS上运行,并兼容PyPy3。
pyfakefs与pytest版本3.0.0或更高版本兼容,尽管推荐使用最新版本。
pyfakefs无法与使用C库访问文件系统的Python库一起工作。这是因为pyfakefs无法修补底层C库的文件访问函数--C库始终会访问真实文件系统。有关pyfakefs限制的更多信息,请参阅文档。
开发
持续集成
pyfakefs目前通过GitHub Actions在Linux、macOS和Windows上自动测试,使用Python 3.7到3.12,以及Linux上的PyPy3。
运行pyfakefs单元测试
在命令行上
可以使用pytest
(所有测试)或unittest
(除pytest特定测试外的所有测试)来运行pyfakefs单元测试。
$ cd pyfakefs/
$ export PYTHONPATH=$PWD
$ python -m pytest pyfakefs
$ python -m pyfakefs.tests.all_tests
类似的脚本由tox
和GitHub Actions调用。tox
可用于在本地针对支持的Python版本运行测试。
$ tox
在Docker容器中
存储库根目录中的Dockerfile
将在最新版本的Ubuntu上运行测试。构建容器
cd pyfakefs/
docker build -t pyfakefs .
在容器中运行单元测试
docker run -t pyfakefs
为pyfakefs做出贡献
我们始终欢迎对库的贡献。有关更多信息,请查看贡献指南。
历史
pyfakefs.py最初由Google的Mike Bland开发,作为核心Python模块的简单模拟实现。它在2006年9月被引入到Google的各个部门。从那时起,它得到了增强,以扩展其功能和实用性。最后统计,pyfakefs在Google的超过20,000个Python测试中使用。
Google于2011年将pyfakefs作为Google Code项目pyfakefs公开发布。
- 分支jmcgeheeiv-pyfakefs增加了对unittest和doctest的直接支持。
- 分支shiffdane-jmcgeheeiv-pyfakefs增加了进一步的修正。
在宣布关闭Google Code后,John McGehee将所有三个Google Code项目合并到了这里GitHub,在那里一个热情的社区积极支持、维护和扩展pyfakefs。2022年,存储库已转移到pytest-dev,以确保持续维护。
项目详情
下载文件
下载适合您平台的文件。如果您不确定该选择哪个,请了解更多关于安装包的信息。