Я пытаюсь протестировать и обновить вид, который прекрасно работает при использовании его через браузер. Но я хочу добавить больше автоматизированных тестов. Примечание. Это мое первое django приложение.
В моем тестовом примере на основе классов я реализовал setUp
, который генерирует необходимые объекты и пользователя. Затем я вхожу в систему с созданным пользователем и пытаюсь обновить объект:
login = self.client.login(username='testuser', password='123456')
response = self.client.post(
reverse('edit_batch', kwargs={'pk': self.id}),
{'project': self.project.id, 'container': self.container.id, 'comment': 'Updated'})
#fails here status_code = 400 (if not debugged)
self.assertEqual(response.status_code, 302)
Обновленное поле: comment
.
Когда я запускаю это, тест завершается неудачно, потому что status_code равен 400. Однако, когда я отлаживаю через представления и форму, по неизвестной причине, эта часть не завершается ошибкой, и я получаю ответ 302. например. похоже, что происходит какое-то состояние гонки.
Это уже очень странно. Что я делаю неправильно ???
Когда этот факт утверждения действительно проходит из-за отладки, я затем не выполняю следующее утверждение, которое проверяет, действительно ли произошло обновление:
self.batch.refresh_from_db()
self.assertEqual(self.batch.comment, 'Updated')
self. batch.comment остается неизменным (Нет), и я вижу, что при отладке и сохранении формы обновленный комментарий поля по-прежнему имеет значение Нет. Не уверен, почему, так как я четко ввел новое значение?