h1. Testing EMail sending in Django
class TestOnboardingEmails(TestCase):
MSG1 = 'Congratulations! You have now set your first '\
'assignment'
MSG2 = 'You have been using product for a week now'
def setUp(self): self.teacher = factories.TeacherFactory.create() self.teacher.email = 'test@test.domani.com' self.teacher.save() self.student = factories.StudentFactory.create() self.studentset = factories.StudentSetFactory.create(owner=self.teacher) self.studentset.join_student(self.student) self.studentset.join_teacher(self.teacher) self.quick = factories.QuickFactory.create() self.original_backend = settings.EMAIL_BACKEND settings.EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend' def tearDown(self): settings.EMAIL_BACKEND = self.original_backend def test_new_assignment(self): aset = AssignmentSet.create(teacher=self.teacher, assign_date=datetime.now(), studentset=self.studentset, students_list=[self.student], content_list=[{'obj': self.quick, 'attempt_max':1}]) cmd = process_events.Command() cmd.handle(no_celery=True, debug=False, name=None, date=None, quiet=False) self.assertTrue(len(mail.outbox)==1) self.assertTrue(self.MSG1 in mail.outbox[0].message().as_string()) self.assertTrue(self.MSG2 not in mail.outbox[0].message().as_string()) after_1_week_plus = datetime.now() + relativedelta(days=8) cmd.handle(no_celery=True, debug=False, name=None, date=after_1_week_plus.strftime(DATE_FORMAT), quiet=False) self.assertTrue(len(mail.outbox)==2) self.assertTrue(self.MSG1 not in mail.outbox[1].message().as_string()) self.assertTrue(self.MSG2 in mail.outbox[1].message().as_string())
if name == 'main':
unittest.main()
The important lines in setUp and tearDown:
def setUp(self):
self.original_backend = settings.EMAIL_BACKEND
settings.EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend'
def tearDown(self):
settings.EMAIL_BACKEND = self.original_backend