カスタムDjango電子メールバックエンドのunittestを作成し、それを「本当の」smtpサーバに対してテストしようとしていますが、Pythonの組み込みsmtpdデバッグを使用しようとしています。実行して、サーバー:Python smtpデバッグサーバから出力をキャプチャする方法
python -m smtpd -n -c DebuggingServer localhost:1025
私のユニットテストは、基本的に次のようになります。
class Tests(TestCase):
@override_settings(EMAIL_BACKEND='mycustombackend')
@override_settings(EMAIL_HOST='localhost')
@override_settings(EMAIL_PORT='1025')
def test_backend(self):
from django.core import mail
mail.send_mail(
subject='Subject here',
message='Here is the message.',
from_email='[email protected]',
recipient_list=['[email protected]'],
fail_silently=False,
)
と、私はこれを実行すると、smtpdのプロセスが正しく、電子メールの内容を出力します。
しかし、私はそれをキャプチャして私のユニットテストでそれを確認できるので、何も得られません。私はsubprocess
パッケージを使用してプロセスを起動し、パイプ経由で出力を読み込もうとしましたが、出力を受け取ることはありません。
最後の手段として、私は、プロセスを起動しようとしたので、私は、私が間違ってサブプロセスを使用していたと思った:
python -m smtpd -n -c DebuggingServer localhost:1025 > /tmp/smtpd.log
とログファイルを読み込みます。しかし、それでも出力はファイルに書き込まれません。
ここでは何が起こっていますか?