有人可以推荐一种对电子邮件发送进行自动化单元测试的方法吗?我有一个向电子邮件服务提供商发出 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,您可以使用它以编程方式访问您的电子邮件服务器。
