【发布时间】:2011-02-23 06:23:34
【问题描述】:
在我的 django 应用程序中,我正在尝试编写一个单元测试来执行一个操作,然后检查响应中的消息。
据我所知,没有很好的方法可以做到这一点。
我使用的是CookieStorage存储方式,我想做类似下面的事情:
response = self.client.post('/do-something/', follow=True)
self.assertEquals(response.context['messages'][0], "fail.")
问题是,我得到的只是一个
print response.context['messages']
<django.contrib.messages.storage.cookie.CookieStorage object at 0x3c55250>
我怎样才能把它变成有用的东西,还是我做错了?
谢谢, 丹尼尔
【问题讨论】:
-
这行得通,但是……真的吗? response.context['messages']._get()[0][0].__dict__['message']
-
您可以尝试将这段不那么漂亮的代码封装在漂亮的函数
assert_has_message(response, msg_text)中,然后在您想要的任何地方使用它。如果您能找到更好的方法来访问消息,您只需在一处修改函数即可。 -
@nailxx,是的,这基本上就是我所做的,但这让我感觉不舒服:)
-
这也有效:
messages_list = CookieStorage(response)._decode(response.cookies['messages'].value)这为您提供了 django.contrib.messages.storage.base.Message 对象的列表。 -
@dvydra 如果你还在,你可能想改变接受的答案
标签: python django unit-testing django-testing