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

发布于 2025-01-03 19:05:50 字数 434 浏览 0 评论 0 原文

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

Using the Django messages framework, I am passing messages to the template to render in various scenarios - user account creation successful etc. The message is stored within the cookie for the session:

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

The cookie is a Morsel object, but I don't appear to be able to pull out the constituent parts of it to test the message content. Any help would be much appreciated!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我恋#小黄人 2025-01-10 19:05:50

编辑:2014 年 10 月 5 日:

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

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

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

原始解决方案:

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

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

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

Edit: 10-05-2014:

An alternative method is to iterate the messages in the response context. Using the Django Test Client, the response message items can be parsed via:

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

Which returns each Django Message object, you can then interrogate the attributes for your tests. This is a cleaner alternative to the original option.

Original Solution:

For archive purposes, the original working solution was to interrogate the Cookie morsel objects in the response cookies. This is less clean than the new solution.

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

in the unittest. It seems quite an ugly solution, but since there won't be another 'Account verified' set, nor another simultaneous message, then it seems acceptable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文