在 alembic 中,我们必须为我们添加的每个迁移实现
upgrade
和 downgrade
函数。 AFAIK downgrade
函数假设要还原 upgrade
所做的所有更改。
有没有办法自动测试
downgrade
功能是否正确实现?
作为最终结果,我想添加一个 pytest 测试,以这种方式断言每个迁移。
一种天真的方法是实现一个函数,该函数对所有模式、表、索引、列等进行“清点”;比较迁移之前和对给定迁移执行升级和降级之后的清单;如果两个清单相同,则
downgrade
已正确实施。这种方法的问题是 (i) 看起来太麻烦而无法实施,并且 (ii) 计算量似乎非常大。
有没有更好的方法来对我的
downgrade
功能进行测试?