2024-05-23 18:12:25 发布
网友
有人能推荐一种对电子邮件传递进行自动化单元测试的方法吗?我有一个库,它可以对电子邮件服务提供商进行web服务调用,并且我想测试到我的测试邮箱的传递。最后,我还需要测试电子邮件内容的期望值。在
我认为测试您正在使用的服务可能是浪费精力。服务应该自己测试,并最终负责达到100%的正常运行时间。您所能做的就是创建结构良好的代码,以便于测试所使用的服务。在
我认为这个术语叫做依赖注入
如果您使用的是一个api,并且他们提供了一个python库,那么您可以模仿他们的python库。这可以使用内置的mock库来实现(我认为它在标准库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)
通过将服务作为参数,很容易模拟服务
您可以创建返回各种响应的测试服务,并确保代码不会中断。在
如果您确实需要测试电子邮件的传递,python在标准库中提供了smtp,您可以使用它以编程方式访问电子邮件服务器。。在
smtp
如果这个“电子邮件服务提供者”web服务在您的代码中,那么通常您会对其进行模拟,并验证用于发送电子邮件的代码是否使用预期参数调用了适当的方法。如果不是,那么在它前面提供一个facade/proxy,这样你就可以模仿它们,并像第一个例子一样验证代码的行为。在
我认为测试您正在使用的服务可能是浪费精力。服务应该自己测试,并最终负责达到100%的正常运行时间。您所能做的就是创建结构良好的代码,以便于测试所使用的服务。在
我认为这个术语叫做依赖注入
如果您使用的是一个api,并且他们提供了一个python库,那么您可以模仿他们的python库。这可以使用内置的mock库来实现(我认为它在标准库python3.x中)
一个快速的例子说明如何做到这一点:
通过将服务作为参数,很容易模拟服务
^{pr2}$您可以创建返回各种响应的测试服务,并确保代码不会中断。在
如果您确实需要测试电子邮件的传递,python在标准库中提供了
smtp
,您可以使用它以编程方式访问电子邮件服务器。。在如果这个“电子邮件服务提供者”web服务在您的代码中,那么通常您会对其进行模拟,并验证用于发送电子邮件的代码是否使用预期参数调用了适当的方法。如果不是,那么在它前面提供一个facade/proxy,这样你就可以模仿它们,并像第一个例子一样验证代码的行为。在
相关问题 更多 >
编程相关推荐