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)
Вернуться на верх