我正在测试我发送电子邮件的代码。我的单元测试大致如下:
class EmailTest(TestCase):
def test_send_email(self):
my_send_mail_method()
self.assertEqual(len(mail.outbox), 1)
只要我的\u send \u mail \u方法在同一个线程中发送电子邮件,这段代码就可以很好地工作。但是,当我更改代码时,我的\u send \u mail方法将从另一个线程发送邮件
len(mail.outbox)
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
我检查了decorator的代码,据我所知,它创建了一个新线程来执行它,等待响应并返回它。但是,我对Python不是很精通,可能错过了一些显而易见的东西。