Python Unittest: объедините два теста в один подтест

у меня есть два похожих теста:

def test_group_posts_context(self):
    response = self.author_client.get(
        reverse('posts:group_posts', kwargs={'slug': self.group.slug})
    )
    self.assertEqual(response.context.get('group'), self.group)

def test_author_profile_context(self):
    response = self.author_client.get(
        reverse('posts:profile', kwargs={'username': self.user.username})
    )
    self.assertEqual(response.context.get('author'), self.user)

Оба теста работают нормально, но я пытаюсь объединить их в один единственный подтест.

Но построение, подобное этому, вызывает ошибку ValueError: слишком много значений для распаковки (ожидалось 2).

def test_both_profile_and_group_show_correct_context(self):
    templates_page_names = {
        reverse('posts:index'),
        reverse('posts:group_posts', kwargs={'slug': self.group.slug}),
        reverse('posts:profile', kwargs={'username': self.post.author}),
    }
    for reverse_name in templates_page_names:
        with self.subTest(reverse_name=reverse_name):
            response = self.author_client.get(reverse_name)
            context_fields = {
                'group': self.group,
                'author': self.user,
            }
            for value, expected in context_fields:
                with self.subTest(value=value):
                    context_field = response.context.get(value)
                    self.assertEqual(context_field, expected)

Мой рецензент говорит, что я должен попробовать использовать кортеж типа (page_address, context name, expected object), но на самом деле я не могу понять, как использовать его здесь :(.

Views.py:

def group_posts(request, slug):
group = get_object_or_404(Group, slug=slug)
page_obj = get_paginate(
    request.GET.get('page'),
    group.posts.select_related('author')
)
context = {
    'group': group,
    'page_obj': page_obj,
}
return render(request, 'posts/group_list.html', context)

def profile(request, username):
author = get_object_or_404(User, username=username)
page_obj = get_paginate(
    request.GET.get('page'),
    author.posts.select_related('group')
)
context = {
    'author': author,
    'page_obj': page_obj,
}
return render(request, 'posts/profile.html', context)
Вернуться на верх