代码之家  ›  专栏  ›  技术社区  ›  gawi Abhijit Sarkar

测试从另一个线程用django发送电子邮件

  •  0
  • gawi Abhijit Sarkar  · 技术社区  · 7 年前

    我正在测试我发送电子邮件的代码。我的单元测试大致如下:

    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不是很精通,可能错过了一些显而易见的东西。

    0 回复  |  直到 7 年前