Django тест на ошибку 404, потому что клиент ожидает 200?
Я пытаюсь протестировать свою страницу 404, чтобы убедиться, что на ней присутствуют определенные элементы.
Мой тест выглядит следующим образом:
class TestApp404PageIncludesLink(TestCase):
def setUp(self):
superuser = UserFactory(is_superuser=True, is_staff=True)
self.client.force_login(superuser)
def test_superuser_can_see_link(self):
response = self.client.get("404")
self.assertTrue(response.status_code == 404)
self.assertContains(response, 'href="/special_link/">Specialty</a>')
Я запускаю этот тест как зарегистрированный пользователь - другие тесты для других представлений работают нормально.
Я пытаюсь проверить страницу 404.
Не получается следующее:
Couldn't retrieve content: Response code was 404 (expected 200)
200 != 404
Как настроить тест так, чтобы он знал, что я пытаюсь получить 404?
404 страницы обычно возвращают код 200 и говорят, что они не смогли пройти через страницу, которую вы отправляете обратно.
Проблема была связана с тем, что я недостаточно внимательно читал документацию.
Утверждение assertContains
принимает аргумент status_code
, который по умолчанию предполагает статус 200
, которым 404 не является. Как только я добавил это в утверждение, проблема была решена.
def test_superuser_can_see_link(self):
response = self.client.get("404")
self.assertTrue(response.status_code == 404)
self.assertContains(response, 'href="/special_link/">Specialty</a>', status_code=404)