有没有测试文件部分写入失败的好方法?我对模拟完整磁盘特别感兴趣。
我有一些修改文件的代码。对于某些故障,代码无能为力,例如:如果在写入时拔下磁盘。但是对于其他可预测的故障,例如磁盘已满,我的代码应该(并且可以)捕获异常并撤消自最近修改开始以来的所有更改。
我认为我的代码在这方面做得很好,但我正在努力寻找一种方法来对其进行详尽的单元测试。编写单元测试来限制真实的文件系统是很困难的。我看不到任何限制 BytesIO 的方法.我不知道有任何模拟包。
在我自己编写之前,是否有任何标准工具/技术?
1 由于一些原因,限制真实的文件系统是很困难的。最大的困难是文件系统通常受限于几个 KiB 而不是字节的块。很难让这个测试所有不愉快的路径。也就是说,一个好的测试将重复不同长度的限制以确保每个人file.write(...)
测试中出现错误,但是使用 4KiB 的块大小来实现这一点将很困难。
最佳答案
免责声明:我是 pyfakefs 的贡献者。
这对您来说可能有点矫枉过正,但您可以使用 pyfakefs 模拟整个文件系统。 .这允许您预先设置文件系统大小。这是一个使用 pytest 的简单示例:
def test_disk_full(fs): # fs is the file system fixture
fs.set_disk_usage(100) # sets the file system size in bytes
os.makedirs('/foo')
with open('/foo/bar.txt', 'w') as f:
with pytest.raises(OSError):
f.write('a' * 200)
f.flush()
关于python - 有没有测试文件部分写入失败的好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63576054/