Skip to main content
 首页 » 编程设计

python之在 Python 中对电子邮件传送进行单元测试

2025年05月04日29soundcode

有人可以推荐一种对电子邮件发送进行自动化单元测试的方法吗?我有一个向电子邮件服务提供商发出 Web 服务调用的库,我想测试发送到我的测试邮箱的情况。最后,我还需要测试电子邮件内容的预期值。

请您参考如下方法:

我认为测试您正在使用的服务可能是错位的精力。该服务应该进行 self 测试,并最终负责尝试达到 100% 的正常运行时间。您可以做的是创建结构良好的代码,以便于测试您正在使用的服务。

我认为这个术语叫做依赖注入(inject)

如果您使用的是 api,并且他们为其提供了 python 库,您可以模拟他们的 python 库。这可以使用内置的 mock 来完成库(我认为它在标准库 python 3.x 中)

如何执行此操作的快速示例:

class AnAPILibraryProvidedByEmailServiceProvider: 
   def send_mail(address, message): 
     # make some rest calls to their service 
     return 200 # success mail code 
 
your_function(email_service, email, message): 
    email_service.send_mail(email, message) 

通过将服务作为参数,很容易模拟服务

class TestService: 
  def send_mail(address, message): 
     return 200 
 
class TestServiceFailedSend: 
  def send_mail(address, message): 
     return 500 

您可以创建返回各种响应的测试服务,并确保您的代码不会中断。

如果您绝对需要测试电子邮件的发送,python 在标准库中提供了 smtp,您可以使用它以编程方式访问您的电子邮件服务器。