Как запустить такой же тест для анонимного пользователя и вошедшего в систему пользователя? - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть простое приложение 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

и многие другие для зарегистрированных пользователей, которых я надеюсь избежать. Я хочу использовать уже написанные тесты для входа в систему, а также для анонимного пользователя / гостя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...