【问题标题】:How to access Django message framework content in Django unit tests如何在 Django 单元测试中访问 Django 消息框架内容
【发布时间】:2012-02-29 22:06:26
【问题描述】:

使用 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 对象,但我似乎无法提取它的组成部分来测试消息内容。任何帮助将不胜感激!

【问题讨论】:

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


    【解决方案1】:

    编辑:10-05-2014:

    另一种方法是在响应上下文中迭代消息。使用 Django 测试客户端,可以通过以下方式解析响应消息项:

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

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

    原解决方案:

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

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

    在单元测试中。这似乎是一个相当丑陋的解决方案,但由于不会有另一个“帐户验证”集,也没有另一个同步消息,所以它似乎可以接受。

    【讨论】:

    • 看起来如果视图返回重定向,response.text 解决方案将不起作用。感谢response.cookies 解决方案!我想知道我是否可以弄清楚如何将它们转回正确的消息对象...
    • 谢谢!这正是我想要的:response.cookies['messages'].value
    猜你喜欢
    • 1970-01-01
    • 2011-02-23
    • 2017-02-13
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 2016-03-29
    • 2015-06-01
    相关资源
    最近更新 更多