首页 > 解决方案 > 如何保护金字塔注册表免受测试更改?

问题描述

我正在尝试编写合理的pytest夹具来测试大型金字塔应用程序。

我正在尝试做的一件事是加快测试执行的速度是将金字塔 wsgi 应用程序创建为会话夹具而不是测试夹具,因为这种创建相当昂贵,但大多数测试都需要。

但是,如果同时有任何测试与应用程序注册表发生冲突,那么注册表将在接下来的测试运行中一直受到污染,并且这种损坏很难定位,因为它通常表现为一些随机测试的失败,在更远的地方相同的试运行。

因此,我希望能够在夹具拆卸时回滚对注册表的更改,或者在夹具设置上克隆金字塔注册表。

如果有人试图更改锁定的注册表,我可以锁定注册表以引发错误,则可以获得奖励积分。

问题

如何确保始终回到同一个金字塔注册表,同时避免在每次测试运行时创建新的 wsgi 应用程序?

标签: pythonpytestpyramid

解决方案


注册表没有用于冻结自身的受支持 api。如果需要,您可以对其进行子类化并覆盖一些方法以使其只读,但这肯定有点乏味。诸如 setattr、registerUtility 之类的东西。


推荐阅读