如何测试Django电子邮件的内容?

时间:2017-11-03 06:06:30

标签: python django email

我是Django的新用户,我正在尝试使用unittest检查出站电子邮件中是否有某些文字:

class test_send_daily_email(TestCase):
    def test_success(self):
        self.assertIn(mail.outbox[0].body, "My email's contents")

但是,我遇到了mail.outbox[0].body的问题。它将输出\nMy email&#39s contents\n并且不会与测试文本匹配。

我尝试了几个不同的修复但没有运气:

  • str(mail.outbox[0].body).rstrip() - 返回一个标识字符串
  • str(mail.outbox[0].body).decode('utf-8') - 无属性解码
道歉,我知道这必须是一项微不足道的任务。在Rails中,我会使用像Nokogiri这样的东西来解析文本。在Django中解析这个问题的正确方法是什么?我无法在the documentation找到相关说明。

1 个答案:

答案 0 :(得分:1)

这取决于您邮件的实际内容(普通或HTML),但简单的方法是对您正在测试的字符串进行编码。

# if you are testing HTML content
self.assertTextInHTML("My email's contents", mail.outbox[0].body)

# the string may need escaping the same way django escapes
from django.utils.html import escape
self.assertIn(escape("My email's contents"), mail.outbox[0].body)