pytest 装置按什么顺序执行?

2024-02-05

对于我正在测试的应用程序,我想创建一个autouse=True猴子补丁的固定装置smtplib.SMTP.connect如果他们尝试意外发送电子邮件,则测试失败。

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

当然,只有当自动使用固定装置在其他固定装置(作为 funcarg 加载)之前执行时,这才有效。是否有执行装置的特定顺序和/或是否有方法保证执行顺序?


控制夹具执行顺序的最简单方法是仅在后一个夹具中请求前一个夹具。所以要确保b之前运行a:

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

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

有关一般夹具分辨率顺序的详细信息,请参见下面是马克西姆的精彩回答 https://stackoverflow.com/a/64471427/758345或者看看文档 https://docs.pytest.org/en/stable/reference/fixtures.html#fixture-instantiation-order.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pytest 装置按什么顺序执行? 的相关文章

随机推荐