如何在该作用域的所有 pytest 固定装置之前 运行 一个作用域函数?

How to run a scoped function before all pytest fixtures of that scope?

我看到了this question,问同样的关于测试前做的事情。

我需要在赛程前做一些事情。

例如,我正在设置一个 dockerized 环境,我必须在构建之前清理它。为了让事情变得更复杂,我使用 this plugin 来定义我无法控制或更改的固定装置,并且我需要在所有固定装置之前出现的东西(并进行 docker-compose down 和其他清理)。

例如,当 pytest 启动时,运行 常见的每会话前置步骤,然后是固定装置,然后是每模块前置步骤,然后是固定装置,依此类推。

这是 pytest 支持的钩子吗?

我找不到相关文档。

正如@MrBean Bremen 所说,pytest_sessionstart 成功了。

一个恼人的问题是,我不能(自然地)在内部使用固定装置,Argument(s) {'fixture_name'} are declared in the hookimpl but can not be found in the hookspec

我试图用 pytest-dependency 解决这个问题,但它似乎不适用于固定装置,仅适用于测试。

我只剩下 来提取 sessionstart 所需的数据到函数中,并在 sessionstart 以及类似命名的固定装置中调用它们。

可以用,但是很丑。

会接受比这个更简洁的解决方案