首页 > 解决方案 > 如何在 Python 测试中伪造假文件系统中的硬链接?

问题描述

我想检查与文件系统交互的 Python 生产代码是否以正确的方式考虑硬链接(指向同一 inode 的文件名)。

在单元测试中,我使用了一个假文件系统(使用pytestfixturetmp_path创建,是一个pathlib/pathlib2.Path对象),并希望在其中伪造硬链接。

hard_link_0...2.txt测试中的假文件系统应包含三个指向假文件系统中同一 inode 的硬链接。

hard_link_0.txt
hard_link_1.txt
/dir
  hard_link_2.txt

标签: python-2.7pytest

解决方案


由于tmp_path创建了一个实际目录(而不是模拟 pathlib),因此您可以tmp_path正常处理所有内容。因此,要创建硬链接,您可以os.link(srcpath, dstpath)像往常一样使用 (从 Python 3.6+ 开始;否则,使用os.link(str(srcpath), str(dstpath)))。


推荐阅读