Тест отправки электронной почты в Django из другого потока - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь проверить мой код, который отправляет электронные письма.Примерно так выглядит мой модульный тест:

class EmailTest(TestCase):
    def test_send_email(self):
        my_send_mail_method()
        self.assertEqual(len(mail.outbox), 1)

Этот код работает отлично, если my_send_mail_method отправляет электронную почту в той же теме.Однако, когда я изменяю код таким образом, что my_send_mail_method будет отправлять почту из другого потока, значение len(mail.outbox) равно 0. my_send_mail_method ожидает окончания отправки письма, поэтому я не думаю, что это проблема параллелизма.


РЕДАКТИРОВАТЬ

Код, который отправляет электронные письма, выглядит так, будто он запускается в том же потоке:

import timeout_decorator
from django.core import mail
from django.test import TestCase

@timeout_decorator.timeout(120, use_signals=False)
def test_send_email():
    mail.send_mail('Subject here', 'Here is the message.',
        'from@example.com', ['to@example.com'],
        fail_silently=False)

Дело в том, что мой метод имеет timeout_decorator (в методе происходит больше вещей, которые могут повредить обработку, и я просто хотел через некоторое время убить процесс).

Я проверил код декоратора и насколько я могу сказать,создает новый поток, выполняет его, ждет ответа и возвращает его.Однако я не очень хорошо разбираюсь в Python и, возможно, здесь упустил что-то очевидное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...