如何编写pickle向后兼容性测试用例

2024-04-23 07:07:25 发布

您现在位置:Python中文网/ 问答频道 /正文

您正在编写一个库,并且您知道您的用户正在pickle您的对象。有时添加新字段,这会造成BC问题,因为对象的旧pickle没有所需的字段。您希望为此案例添加一些测试

显而易见的方法是从旧版本中保存一些实际的pickle,以某种方式将它们放入测试套件中,并确保可以继续取消pickle。但是拥有硬编码的二进制测试数据是非常不酷的。有没有一种不需要手动二进制代码就可以编写测试的方法?我曾尝试在本地声明的类(旨在模拟“旧”版本)上“伪造”__module____qualname__字段,但我遇到了类似“pickle.PicklingError:cant pickle:它与torch.nn.modules.conv.Conv2d不是同一个对象”这样的错误,有好方法吗


Tags: 对象方法代码用户版本声明编码套件