【发布时间】:2014-10-28 21:12:14
【问题描述】:
对于我正在测试的应用程序,我想创建一个 autouse=True 固定装置,如果 smtplib.SMTP.connect 尝试意外发送电子邮件,该固定装置会导致测试失败。
但是,在我确实希望测试发送电子邮件的情况下,我想使用不同的装置来记录这些电子邮件(很可能通过使用来自 pytest-localserver 的 smtpserver 装置和猴子修补 connect 方法来使用该夹具返回的主机/端口)
当然,只有在 autouse 固定装置在另一个固定装置(作为 funcarg 加载)之前执行时才有效。是否有任何特定的夹具执行顺序和/或有办法保证执行顺序?
【问题讨论】:
-
一个非常有道理的问题,我已经看到灯具被滥用了很多次,最成问题的事情之一是哪个灯具在哪个之前运行
-
另一个有用的技巧是,fixture 可以检查测试函数的 pytest 标记。这意味着您可以
@mark需要执行特殊操作的测试,然后使用请求对象检查测试函数是否有标记。如果是,请在您的灯具中执行不同的操作。 -
知道拆解顺序也不错