我们可以在 pytest 中有多个 addfinalizer

Har*_*rma 1 python testing pytest

我想在pytest中添加多个finalizer函数,那么是否可以添加多个addfinalizer。如果是,那么执行的顺序是什么。任何帮助,将不胜感激。

谢谢

小智 5

您可以添加多个终结器。来自pytest 文档

yield 和 addfinalizer 方法通过在测试结束后调用它们的代码来工作,但 addfinalizer 与 yield 有两个关键区别:

  1. 可以注册多个终结器函数。
  2. 无论夹具设置代码是否引发异常,都将始终调用终结器。即使无法创建/获取其中一个资源,这也可以方便地正确关闭由夹具创建的所有资源:

这个问题与this other stackoverflow question非常相似,其中讨论了顺序问题(并提供了更好的解决方案)。