Почему результат SimpleTestCase.assertContains равен False?

Как можно улучшить момент проверки, что маршрут содержит переменную маршрутизации и ожидаемый шаблон в тесте `test_delete_by_unauthorized_user`?
  • 4 апреля 2024 г. 7:49
Ответы на вопрос 2
1. Результат `SimpleTestCase.assertContains` равен False, потому что данный метод проверяет содержится ли определенный кусок текста в другом тексте. Если тестируемый объект не содержит искомого текста, то метод вернет False.

2. Для улучшения момента проверки, что маршрут содержит переменную маршрутизации и ожидаемый шаблон в тесте `test_delete_by_unauthorized_user`, можно использовать более точные методы проверки. Например, можно использовать `reverse` для получения URL маршрута по его имени и сравнить его с ожидаемым значением. Также можно проверить, что данный маршрут требует аутентификации для доступа, удостоверившись, что только авторизованные пользователи могут делать запросы к нему.
Я нашел решение проблемы. 
Я не установил во второй функции в метод, выполняющий запрос - self.client.post() аргумент follow=True .
Т.е. у меня сохранялся только первый адрес и состояние - ('/tasks/6/delete/', 302) , а не все промежуточные адреса и коды состояния.
Я правильно понял механизм assertContains - он проходит по всем полученным в ходе запроса адресам и состояниям и проверяет, что response произвел данный status_code и что text появляется в его content . И если он получил хоть одно совпадение, то возвращает True ?
Похожие вопросы