I am trying to test my 404 page to ensure certain elements are present on it.
My test looks like this:
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>')
I am running this test as a logged in user - other tests for other views work fine.
I'm trying to check the 404 page.
It fails with this:
Couldn't retrieve content: Response code was 404 (expected 200)
200 != 404
How do I set up the test so it knows I am trying to get a 404?
The issue had to do with me not reading the documentation thoroughly enough apparently.
The assertContains
takes a status_code
argument that by default assumes a status of 200
, which a 404 is not. Once I added that to the assertion it was resolved.
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)