python - 有没有测试文件部分写入失败的好方法?

标签 python unit-testing

有没有测试文件部分写入失败的好方法?我对模拟完整磁盘特别感兴趣。
我有一些修改文件的代码。对于某些故障,代码无能为力,例如:如果在写入时拔下磁盘。但是对于其他可预测的故障,例如磁盘已满,我的代码应该(并且可以)捕获异常并撤消自最近修改开始以来的所有更改。
我认为我的代码在这方面做得很好,但我正在努力寻找一种方法来对其进行详尽的单元测试。编写单元测试来限制真实的文件系统是很困难的。我看不到任何限制 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/

相关文章:

java - PowerMock-IllegalStateException : Must replay Class XXX to get configured expectation

python - 将我的 Google Geocoding API key 与 Python 地理编码器一起使用

python - 获取 pandas HDF5 查询中的最后一行

python - 狮身人面像中的组方法文档字符串

java - 如何使用 EasyMock 测试模拟调用的顺序

python 模拟 : @wraps(f) problems

python - Pyside2 将键绑定(bind)到方法调用而不是按钮或菜单

python - 当类型应该清晰时,如何处理 mypy 中不支持的操作数类型?

c++ - 如何在 Visual Studio 2010 中设置单独的 Boost 测试项目

c# - 断言相等匿名类型