2

電子メール配信の自動化された単体テストを実行する方法を誰かが推奨できますか? 電子メール サービス プロバイダーへの Web サービス呼び出しを行うライブラリがあり、テスト メールボックスへの配信をテストしたいと考えています。最終的には、期待値についてメールの内容をテストする必要もあります。

4

2 に答える 2

1

使用しているサービスをテストするのはエネルギーの配置が間違っているのではないかと思います。サービスはそれ自体をテストする必要があり、最終的には 100% のアップタイムを達成しようとする責任があります。できることは、使用しているサービスを簡単にテストできる、適切に構造化されたコードを作成することです。

これの用語は依存性注入と呼ばれると思います

API を使用していて、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

あらゆる種類の応答を返すテスト サービスを作成して、コードが壊れていないことを確認できます。

電子メールの配信をどうしてもテストする必要がある場合は、Pythonsmtpが標準ライブラリで提供するものを使用して、電子メール サーバーにプログラムでアクセスできます。

于 2013-09-22T22:16:09.650 に答える
0

この「電子メール サービス プロバイダー」Web サービスがコード内にある場合、通常はそれをモックし、電子メールを送信するためのコードが、予期されるパラメーターを使用して適切なメソッドを呼び出すことを確認します。そうでない場合は、その前にファサード/プロキシを提供して、それらをモックし、最初のケースとまったく同じようにコードの動作を確認できるようにします。

于 2013-09-22T22:18:39.027 に答える