在我的 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 = self.client.post('/foo/')
messages = list(response.context['messages'])
self.assertEqual(len(messages), 1)
self.assertEqual(str(messages[0]), 'my message')
如果您需要检查没有上下文的响应中的消息,您可以使用以下命令:
from django.contrib.messages import get_messages
messages = list(get_messages(response.wsgi_request))
self.assertEqual(len(messages), 1)
self.assertEqual(str(messages[0]), 'my message')
后备存储不支持索引,但它是可迭代的。
关于python - 如何对 django 消息进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2897609/