/ / Comment puis-je tester le contenu alternatif du corps dans un objet EmailMultiAlternatives à l'aide du système de test django? - django, email, assertions, django-testing

Comment puis-je tester le contenu alternatif du corps dans un objet EmailMultiAlternatives à l'aide du système de test django? - django, email, assertions, django-testing

J'ai un objet EmailMultiAlternatives avec du texte et du contenu HTML à mon avis:

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

Lorsque je teste le contenu de l'attribut body message contient la version texte et je ne sais pas comment affirmer le contenu 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

Réponses:

0 pour la réponse № 1

Lorsque vous écrivez - mail.outbox[0], un objet e-mail vous est renvoyé qui est une instance de EmailMultiAlternatives classe. Il a un attribut appelé alternatives qui est une liste de contenus alternatifs.

Puisque vous n'avez joint qu'un seul contenu alternatif, vous pouvez le récupérer comme ceci:

mail.outbox[0].alternatives[0]

# above will return the following tuple:

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

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

Pour tester le message, vous pouvez procéder comme suit:

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