我正在尝试编写一个单元测试来测试磁盘已满时函数的行为。在大多数测试运行时,我需要文件访问功能正常运行,以便实际创建我正在创建的文件,然后在某一时刻我需要磁盘“满”。我找不到使用 来执行此操作的方法mock_open()
,因为由此创建的文件对象似乎在函数调用之间不存在。我尝试使用pyfakefs
并设置磁盘大小,self.fs.set_disk_usage(MAX_FS_SIZE)
但是当我尝试在测试中运行它时,它允许used_size
变为负数,这意味着总是有可用空间(尽管奇怪的是,他们的示例代码可以正常工作)。
有没有办法在我的代码中的特定点模拟磁盘空间不足错误?模拟 write 函数以产生副作用是我的直接想法,但我无法访问我在测试代码中写入的文件对象,因为它深埋在函数调用中。
编辑:看起来我在 pyfakefs 中发现了一个错误
Edit2:pyfakefs 中的错误已修复;现在按预期工作。仍然有兴趣知道是否有办法让 f.write() 用简单的模拟抛出 OSError。