В моем django приложении я пытаюсь записать модульный тест, который выполняет действие и затем проверяет сообщения в ответ.
Насколько я могу сказать, нет никакого хорошего способа сделать это.
Я использую метод устройства хранения данных CookieStorage, и я хотел бы сделать что-то подобное следующему:
response = self.client.post('/do-something/', follow=True)
self.assertEquals(response.context['messages'][0], "fail.")
Проблема, все, что я возвращаю, a
print response.context['messages']
<django.contrib.messages.storage.cookie.CookieStorage object at 0x3c55250>
Как я могу превратить это во что-то полезное, или я делаю все это неправильно?
Спасибо, Daniel
Мой первоначальный ответ был написан, когда django был еще 1.1 или около того. Этот ответ больше не актуален. Смотрите ответ @daveoncode для лучшего решения.
Я провел эксперимент, чтобы проверить это. Я изменил параметр MESSAGE_STORAGE
в одном из моих проектов на 'django.contrib.messages.storage.cookie.CookieStorage'
и выполнил тест, который я написал для проверки наличия сообщений. Он сработал.
Ключевым отличием от того, что вы делали, является способ получения сообщений. Смотрите ниже:
def test_message_sending(self):
data = dict(...)
response = self.client.post(reverse('my_view'), data)
messages = self.user.get_and_delete_messages()
self.assertTrue(messages)
self.assertEqual('Hey there!', messages[0])
Это может стоить попробовать.