django - 如何使用 django 测试系统测试 EmailMultiAlternatives 对象中的替代正文内容?

标签 django email assertions django-testing

我在我的 View 中有带有文本和 html 内容的 EmailMultiAlternatives 对象:

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

当我测试消息正文属性的内容包含文本版本时,我不知道如何断言 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

最佳答案

当你写 - mail.outbox[0] , 返回给您的电子邮件对象是 EmailMultiAlternatives 的实例类(class)。它有一个名为 alternatives 的属性这是替代内容的列表。

由于您只附加了 1 个替代内容,因此您可以像这样获取它:

mail.outbox[0].alternatives[0]

# above will return the following tuple:

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

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

要测试消息,您可以执行以下操作:
self.assertHTMLEqual(mail.outbox[0].alternatives[0][0], messageHTML)

关于django - 如何使用 django 测试系统测试 EmailMultiAlternatives 对象中的替代正文内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49328597/

相关文章:

python - 如何避免此 "' 元组'对象没有属性 'photo'“我的自定义用户模块中的错误?

iphone - 有没有办法限制仅将电子邮件发送到预定义的目的地?

Android:ACTION_SEND_MULTIPLE 与 com.android.email

Python 错误 : This method is only available to the class, 不在实例上

python - 在 Django 中获取当前登录用户

django - pytest-django:使用 create_user 创建的用户始终经过身份验证

email - GitHub 提交电子邮件

authentication - OAuth2 SAML授权授予中的SubjectConfirmation是什么意思?

rest - 从 groovy 脚本中提取 token 的值

c++ - 使用 __debugbreak 在 GoogleTest 中捕获自定义断言