2

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

4

2 回答 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 回答
0

如果这个“电子邮件服务提供商”网络服务在您的代码中,那么您通常会模拟它,并验证您的用于发送电子邮件的代码是否调用了具有预期参数的适当方法。如果不是,则在其前面提供一个外观/代理,以便您可以模拟它们,并完全按照第一种情况验证代码的行为。

于 2013-09-22T22:18:39.027 回答