Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的电子邮件传递单元测试_Python_Unit Testing_Email - Fatal编程技术网

Python中的电子邮件传递单元测试

Python中的电子邮件传递单元测试,python,unit-testing,email,Python,Unit Testing,Email,有人能推荐一种方法来进行电子邮件传递的自动化单元测试吗?我有一个向电子邮件服务提供商进行web服务调用的库,我想测试向我的测试邮箱的传递。最后,我还需要测试电子邮件内容的预期值。我认为测试您正在使用的服务可能是精力放错了地方。服务应该进行自我测试,并最终负责尝试达到100%的正常运行时间。您可以做的是创建结构良好的代码,以便测试您正在使用的服务 我认为这个术语叫做依赖注入 如果您使用的是api,并且他们提供了一个python库,那么您可以模拟他们的python库。这可以通过使用内置库来实现(我认

有人能推荐一种方法来进行电子邮件传递的自动化单元测试吗?我有一个向电子邮件服务提供商进行web服务调用的库,我想测试向我的测试邮箱的传递。最后,我还需要测试电子邮件内容的预期值。

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

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

如果您使用的是api,并且他们提供了一个python库,那么您可以模拟他们的python库。这可以通过使用内置库来实现(我认为它在标准库Python3.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,您可以使用该库以编程方式访问电子邮件服务器。

如果代码中包含此“电子邮件服务提供商”web服务,则通常会对其进行模拟,并验证用于发送电子邮件的代码调用了具有预期参数的适当方法。如果没有,那么在它前面提供一个/以便您可以模拟它们,并与第一种情况完全一样验证代码的行为