8

Django フレームワークでテスト ケースを作成しました。

ユースケース: メールを送信してユーザーを登録する API を使用しており、メールに記載されているリンクをクリックすると、アカウントがアクティブになります。

私のsettings.pyで私は使用しています

EMAIL_FILE_PATH  ='django.core.mail.backends.filebased.EmailBackend'

これはローカル ディレクトリを指します。

EclipseからPyUnitテストケースを実行すると、すべてが機能します。メールを送信するたびにテキストファイルが生成される

しかし、私が使用しているとき

python ./manage.py test <component_name>

ファイルは生成されません。

./manage.pyテストケースを実行するときと使用するときの違いは何pyUnitですか?

4

2 に答える 2

38

特定の電子メール バックエンドを使用する場合は、Django でこの側面を上書きすることができます。

Django.test.utils では、Django がテスト環境をセットアップするときに、Django テスト ドキュメントに記載されているように、Django は電子メール バックエンドを locmem に変更します。

def setup_test_environment():
...
    mail.original_email_backend = settings.EMAIL_BACKEND
    settings.EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend'

したがって、テストのために電子メールの送信を有効にしたい場合は、必要な設定に変更するだけです。

from django.test.utils import override_settings

@override_settings(EMAIL_BACKEND='django.core.mail.backends.filebased.EmailBackend')
class MyTest(TestCase):
    # your test case
于 2013-02-24T16:43:47.457 に答える
7

簡単な答え:

独自の電子メール システムを設計しないとこれを行うことはできませんが、それはおそらくばかげているでしょう。電子メールを送信することなく、コードが成功したことを確認するために何か他のことを行うことをお勧めします。同様に、コードを実行し、ユーザーがリンクをクリックすると仮定し、RequestFactory を作成してリンクを取得/投稿し、それに関連付けられたビュー コードを実行します。

Django テスト アプリケーションから:

メールサービス

"If any of your Django views send email using Django's email functionality,
you probably don't want to send email each time you run a test using that
view. For this reason, Django's test runner automatically redirects all
Django-sent email to a dummy outbox. This lets you test every aspect of
sending email -- from the number of messages sent to the contents of each
message -- without actually sending the messages."
于 2012-12-12T21:32:31.657 に答える