如何在Django单元测试中访问Django消息框架内容

时间:2012-02-08 13:06:10

标签: python django unit-testing django-testing django-middleware

使用Django消息框架,我将消息传递给模板以在各种场景中呈现 - 用户帐户创建成功等。消息存储在会话的cookie中:

print response.cookies['messages']
Set-Cookie: messages="b6870b4797b65640bb535519a5b53808fdc0ea24$[[\"__json_message\"\05420\054\"Account verified\054 you are now logged in\"]]"; Path=/

Cookie是Morsel对象,但我似乎无法提取它的组成部分来测试邮件内容。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:8)

编辑:10-05-2014:

另一种方法是迭代响应上下文中的消息。使用Django Test Client,可以通过以下方式解析响应消息项:

for message in response.context['messages']:

返回每个Django Message对象,然后您可以查询测试的属性。这是原始选项的更清晰的替代方案。

原始解决方案:

出于存档目的,原始的工作解决方案是询问响应cookie中的Cookie morsel对象。这比新解决方案更不干净。

self.assertTrue('Account verified' in response.cookies['messages'].value)

在unittest中。这似乎是一个非常难看的解决方案,但由于不会有另一个“帐户验证”设置,也没有另一个同时发送的消息,那么它似乎是可以接受的。