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

jvc*_*c26 6 python django unit-testing django-middleware django-testing

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

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

cookie是一个Morsel对象,但我似乎无法拉出它的组成部分来测试消息内容.任何帮助将非常感激!

jvc*_*c26 8

编辑:10-05-2014:

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

for message in response.context['messages']:
Run Code Online (Sandbox Code Playgroud)

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

原始方案:

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

self.assertTrue('Account verified' in response.cookies['messages'].value)
Run Code Online (Sandbox Code Playgroud)

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