您正在编写一个库,并且您知道用户在使您的对象腌制。有时您添加新字段,这会造成BC问题,因为对象的旧泡菜没有所需的字段。您想为此案例添加一些测试。
执行此操作的明显方法是从旧版本中保存一些实际的泡菜,以某种方式将其放入测试套件中,并确保您可以继续对其进行酸洗。但是拥有硬编码的二进制测试数据是非常不酷的。有没有一种方法可以编写测试而无需执行一些手动二进制操作?我曾尝试在本地声明的类(旨在模拟“旧”版本)上伪造__module__
和__qualname__
字段,但遇到类似“ _pickle.PicklingError”的错误:不能泡菜:它与torch.nn.modules.conv.Conv2d不同。“有什么好方法吗?