У меня есть простое приложение MovieDB, написанное на Django, где веб-страницы немного различаются между просмотром входа в систему и просмотром гостевого пользователя.
У меня есть страница списка фильмов, которая не изменяется для вошедшего в систему пользователя и анонимного пользователя, за исключением ссылок входа / регистрации для выхода из системы. В настоящее время я тестирую используемый шаблон, нет. перечисленных фильмов, заголовок mov ie, ссылки навигационной панели (главная страница, страница поиска, вход / регистрация, выход, учетная запись пользователя). Я хочу написать тесты, чтобы проверить их для обоих типов пользователей только один раз .
Мои тесты выглядят так:
class HomePageTest(TestCase):
def setUp(self) -> None:
self.response = self.client.get(reverse("core:home"))
def test_home_page_is_accessible(self):
self.assertEqual(self.response.status_code, 200)
def test_home_page_template(self):
self.assertTemplateUsed(self.response, template_name="base.html")
def test_site_name_renders_and_links_to_home_page(self):
self.assertContains(self.response, "MovieDB", count=1)
self.assertContains(self.response, f" href=\"{reverse('core:home')}\"")
def test_sign_in_renders_and_links_to_sign_in_page(self):
self.assertContains(self.response, "Sign In", count=1)
self.assertContains(self.response, f" href=\"{reverse('account_login')}\"")
def test_sign_up_renders_links_to_sign_up_page(self):
self.assertContains(self.response, "Sign Up", count=1)
self.assertContains(self.response, f" href=\"{reverse('account_signup')}\"")
def test_home_page_for_logged_in_user(self):
self.client.login(**self.credentials)
response = self.client.post('/account/login/', self.credentials, follow=True)
self.assertEqual(response.status_code, 200)
self.assertIn(reverse('core:home'),
response.redirect_chain[0],
msg="checks redirect after login")
self.assertEqual(self.user.username, response.context['user'].username)
self.assertContains(response, "Change E-mail", count=1)
self.assertContains(response, "Sign Out", count=1)
self.assertContains(response, f" href=\"{reverse('account_logout')}\"")
self.assertNotContains(response, "Sign In")
self.assertNotContains(response, "Sign Up")
Мне придется переписать :
test_home_page_template
test_site_name_renders_and_links_to_home_page
и многие другие для зарегистрированных пользователей, которых я надеюсь избежать. Я хочу использовать уже написанные тесты для входа в систему, а также для анонимного пользователя / гостя.