单元测试以及禁止发送邮件

当在单元测试中,或者在一个开发环境中,能够禁止邮件发送是十分有用的。

如果设置项 TESTING 设置成 True,emails 将会被禁止发送。调用 send() 发送邮件实际上不会有任何邮件被发送。

另外在测试环境之中的话,你可以设置 MAIL_SUPPRESS_SENDTrue,这也会有相同的效果。

然而,当单元测试的时候追踪邮件是否发送成功也是十分有用的。

为了能够追踪发送邮件的“轨迹”,可以使用 record_messages 方法:

  1. with mail.record_messages() as outbox:
  2. mail.send_message(subject='testing',
  3. body='test',
  4. recipients=emails)
  5. assert len(outbox) == 1
  6. assert outbox[0].subject == "testing"

outbox 是一个 发送 Message 实例的列表。

为了使得上述代码能够正常运行,必须安装 blinker 包。

需要注意的是以前的处理方式,即把 outbox 赋予给 g 对象已经过时。