3

对于一些相当复杂的单元测试环境,我们希望动态更改元数据中包含的表。.remove(table)使用or 甚至支持从中删除表.clear()。但是以后如何重新添加这样的表呢?

MetaData中有一个_add_table(name, schema)方法,但这似乎不是官方的方法。Table._set_parent(metadata)如果必须走“使用内部方法”路线,这似乎更合适。

还有一个是Table.tometadata(metadata)创建一个附加新元数据的新表实例。所以我可以创建一个完整的新元数据并附加所有“现在需要”的表。但这意味着所有剩余的代码都需要了解与新元数据相关联的新表实例。我不想走这条路。

更新:我们现在正在考虑 fork/multiprocessing 仅在子进程(隔离环境)中加载表,以便只有该子进程被“污染”并且下一个测试不会受到伤害。为了完整起见,我在这里注意到这一点,它与主要问题没有严格的关系,但可能会帮助其他找到这个问题的人。

4

1 回答 1

1

MetaData几乎不支持以非附加方式对对象进行突变,总体而言,您不应该在其之上构建用例。MetaData在特定场景中使用包含您正在寻找的模式的新对象效果最好。

于 2013-02-24T18:05:10.227 回答