有人可以推荐一种对电子邮件传递进行自动化单元测试的方法吗?我有一个库,它向电子邮件服务提供商发出 Web 服务调用,我想测试发送到我的测试邮箱。最终,我还需要测试电子邮件内容的预期值。
问问题
605 次
2 回答
1
我认为测试您正在使用的服务可能会浪费精力。该服务应该进行自我测试,并最终负责尝试达到 100% 的正常运行时间。您可以做的是创建易于测试您正在使用的服务的结构良好的代码。
我认为这个术语称为依赖注入
如果您使用的是 api 并且他们为它提供了一个 python 库,那么您可以模拟他们的 python 库。这可以使用内置的模拟库来完成(我认为它在标准库 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
了标准库,您可以使用它以编程方式访问您的电子邮件服务器。
于 2013-09-22T22:16:09.650 回答