我正在尝试测试带有附件的邮件,我正在附加这样的文件:
# snippet of send_pdf_mail
mail = EmailMessage(
subject=subject,
body=message,
from_email=from_email,
to=recipient_list,
)
dynamic_template_data.update({'subject': subject})
mail.content_subtype = 'html'
mail.dynamic_template_data = dynamic_template_data
mail.template_id = dynamic_template_id
if attachment:
attachment.open()
mail.attach(basename(attachment.name), attachment.read(), guess_type(attachment.name)[0])
attachment.close()
return mail.send(fail_silently=False)
那么我的测试是这样的:
f = open('tests/test.pdf', 'rb')
user.pdf.save('test.pdf', File(f))
f.close()
send_pdf_mail(user)
self.assertEqual(len(mail.outbox), 1)
self.assertEqual(mail.outbox[0].to[0], user.email)
但是当我尝试通过以下方式检查是否有附件时:
print(mail.outbox[0].attachments)
它返回一个空列表,所以我不知道为什么,但我测试了代码,我可以确认这确实包含发送电子邮件时的附件。