Как в написании теста проверить контекст страниц через цикл в django?
Имеется потребность объединить код для страниц в одну функцию и проверять контекст страниц через цикл.
class PostPagesTests(TestCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.user = User.objects.create(username='user')
cls.group = Group.objects.create(
title='Тестовая группа',
slug='test-slug',
description='Тестовое описание группы',
)
cls.post = Post.objects.create(
text='Тестовый текст поста',
author=cls.user,
group=cls.group,
)
cls.public_pages_names = {
reverse("posts:index"): "posts/index.html",
reverse(
"posts:group_list", kwargs={"slug": cls.group.slug}
): "posts/group_list.html",
reverse(
"posts:profile", kwargs={"username": cls.post.author}
): "posts/profile.html",
reverse(
"posts:post_detail", kwargs={"post_id": cls.post.id}
): "posts/post_detail.html",
}
def setUp(self):
self.guest_client = Client()
self.authorized_client = Client()
self.authorized_client.force_login(PostPagesTests.user)
Я начал: def test_uses_correct_context_publik_pages(self): """Правильные контексты публичных страниц.""" for reverse_name in self.public_pages_names.items(): response = self.guest_client.get(reverse_name)
Но как осуществить это не знаю. Без циклов проверки выглядят так: def test_index_html_show_correct_context(self): """Шаблон index_html сформирован с правильным контекстом.""" response = self.guest_client.get( reverse("posts:index") ) self.assertEqual(response.context.get("post").text, self.post.text) self.assertEqual(response.context.get("post").author, self.post.author) self.assertEqual(response.context.get("post").group, self.post.group)
def test_group_list_correct_context(self):
"""Шаблон group_list сформирован с правильным контекстом."""
response = self.guest_client.get(reverse(
"posts:group_list", kwargs={"slug": self.group.slug}))
expected = list(Post.objects.filter(group_id=self.group.id)[:10])
self.assertEqual(list(response.context["page_obj"]), expected)
def test_profile_correct_context(self):
"""Шаблон profile сформирован с правильным контекстом."""
response = self.guest_client.get(
reverse("posts:profile", args=(self.post.author,))
)
expected = list(Post.objects.filter(author_id=self.user.id)[:10])
self.assertEqual(list(response.context["page_obj"]), expected)