Почему результат 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 маршрута по его имени и сравнить его с ожидаемым значением. Также можно проверить, что данный маршрут требует аутентификации для доступа, удостоверившись, что только авторизованные пользователи могут делать запросы к нему.
Я нашел решение проблемы. <br/> Я не установил во второй функции в метод, выполняющий запрос - <code class="python">self.client.post()</code> аргумент <code class="python">follow=True</code> . <br/> Т.е. у меня сохранялся только первый адрес и состояние - <code class="python">('/tasks/6/delete/', 302)</code> , а не все промежуточные адреса и коды состояния. <br/> Я правильно понял механизм <a href="https://django.fun/docs/django/5.0/topics/testing/tools/#django.test.SimpleTestCase.assertContains" rel="nofollow">assertContains</a> - он проходит по всем полученным в ходе запроса адресам и состояниям и проверяет, что <code class="python">response</code> произвел данный <code class="python">status_code</code> и что <code class="python">text</code> появляется в его <code class="python">content</code> . И если он получил хоть одно совпадение, то возвращает <code class="python">True</code> ?
Похожие вопросы