pytest fixtures 以什么顺序执行?

新手上路,请多包涵

对于我正在测试的应用程序,我想创建一个 autouse=True 夹具,其中 monkeypatches smtplib.SMTP.connect 如果他们尝试意外发送电子邮件,则测试失败。

但是,在我确实希望测试发送电子邮件的情况下,我想使用不同的夹具来记录这些电子邮件(最有可能通过使用来自 pytest-localserversmtpserver 夹具和 monkeypatching connect 使用该设备返回的主机/端口的方法)

当然,只有在 autouse fixture 在另一个 fixture(作为 funcarg 加载)之前执行时才能工作。是否有执行固定装置的特定顺序和/或是否有保证执行顺序的方法?

原文由 ThiefMaster 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 809
1 个回答

控制 fixture 执行顺序的最简单方法是只在后面的 fixture 中请求前一个 fixture。因此,要确保 ba 之前运行:

 @pytest.fixture(autouse=True, scope="function")
def b():
    pass

@pytest.fixture(scope="function")
def a(b):
    pass

有关一般夹具分辨率顺序的详细信息,请参阅 下面 Maxim 的出色回答 或查看 文档

原文由 Chronial 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题