Django 1.3: исходящие пустые во время тестов - PullRequest
12 голосов
/ 24 марта 2011

Возможно, я не понимаю, как работает исходящая почта, но из документации я понял, что она просто перехватывает всю исходящую почту во время тестирования.

Я создал новый проект с новым приложением и добавил следующий код.

from django.test import TestCase
from django.core.mail import send_mail, outbox

class SimpleTest(TestCase):
    def test_basic_addition(self):
        send_mail('Subject here', 
                  'Here is the message.', 
                  'from@example.com', 
                  ['to@example.com'], 
                  fail_silently=False)

        self.assertEqual( len( outbox ), 1 )

Когда я запускаю python manage.py test app_name, он выдает ошибку подтверждения, что 0! = 1. Я что-то не так делаю?

Обновление

Что ж, это странно, если я импортирую django.core.mail и использую mail.outbox, он работает.

Попытка сравнить прямой импорт исходящих и mail.outbox, и они оба дают разные результаты

from django.core import mail
from django.core.mail import send_mail, outbox     
...
self.assertEqual(outbox, mail.outbox)

возвращается:

- []
+ [<django.core.mail.message.EmailMessage object at 0x1e1fd90>]

Может быть, я долго работал и упустил что-то действительно очевидное?

1 Ответ

18 голосов
/ 24 марта 2011

Может быть, мне стоит прочитать документацию.

Атрибут outbox - это специальный атрибут, который создается только при использовании почтового сервера locmem.Обычно он не существует как часть модуля django.core.mail, и вы не можете импортировать его напрямую .

https://docs.djangoproject.com/en/dev/topics/testing/overview/#django.core.mail.django.core.mail.outbox

...