/ / Jak mogę przetestować alternatywną treść w obiekcie EmailMultiAlternatives za pomocą systemu testowego django? - django, e-mail, asercje, testy django

Jak mogę przetestować alternatywną treść treści w obiekcie EmailMultiAlternatives za pomocą systemu testowego django? - django, email, asercje, testowanie django

Mam obiekt EmailMultiAlternatives z moim tekstem i treścią HTML:

email = EmailMultiAlternatives(subject=subject, body=message, from_email=sender, to=recipient)
email.attach_alternative(messageHTML, "text/html")

Kiedy testuję treść atrybutu treści wiadomości zawiera wersję tekstową i nie wiem, jak zapewnić treść HTML:

self.assertHTMLEqual(mail.outbox[0].body, message) # This test passes
self.assertHTMLEqual(mail.outbox[0].<???>, messageHTML) # But here I don"t know what to do

Odpowiedzi:

0 dla odpowiedzi № 1

Kiedy piszesz - mail.outbox[0], zwracany jest obiekt e-mail, który jest instancją EmailMultiAlternatives klasa. Ma atrybut o nazwie alternatives która jest listą alternatywnych treści.

Ponieważ dołączyłeś tylko 1 alternatywną treść, możesz pobrać ją w następujący sposób:

mail.outbox[0].alternatives[0]

# above will return the following tuple:

("<html>...</html>", "text/html")

# ______________/    _______/
#        |                |
#   HTML content        mimetype

Aby przetestować wiadomość, możesz to zrobić:

self.assertHTMLEqual(mail.outbox[0].alternatives[0][0], messageHTML)