Django Тестирование view

Тестирую view. Есть задача от ревьювера как должно быть выполнено тестирование, нет понимания как это должно выглядеть в коде. Прошу подсказать, как это можно реализовать?

  1. Нужно в контекстах проверять то что у нас передается в контекст во вьюхах. Весь код повторяется в 4 тестах: индекс, группа, профайл, пост_детаил. Нужно создать функцию, которая не будет начинаться со слова тест. Функция принимает 2 значения по мимо self: запрос, и булеву переменную, по умолчанию она равна False. Если это переменная True то из контекста достаем post, иначе достаем page_obj и пошли сравнивать всё: автора, группу, текст и дату. В тесте пост_детаил в вызов функции передаём булево значение True, в остальных 3 ничего не передаём. По мимо этого в профайле и группе отдельно тестим автора и группу соответственно.
  2. Нужен тест что пост не попал не в ту группу:
  • создать пост с группой из сетапа, создать группу, сделать респонс на новую группу,
  • проверить что пагинатор у неё пустой, проверить что у поста есть группа,
  • сделать запрос на старую группу и убедиться что пост там есть.
  1. Нужен тест контекста креате и эдит - создать кортеж с именами и аргументами, пройтись циклом-сабтестом, проверить что форма есть - ассертиин, что форма это ПостФорма - ассертИсИнстансе, дальше пройтись по формам и проверить поля в цикле сабтесте. Код VIEW

   def index(request):
       post = Post.objects.select_related('group', 'author')
       page_obj = get_page_context(post, request)
       context = {'page_obj': page_obj, }
       return render(request, 'posts/index.html', context)
   def group_posts(request, slug):
       group = get_object_or_404(Group, slug=slug)
       posts = group.posts.select_related('author')
       page_obj = get_page_context(posts, request)
       context = {
           'group': group,
           'page_obj': page_obj,
       }
       return render(request, 'posts/group_list.html', context)
   def profile(request, username):
       post_author = get_object_or_404(User, username=username)
       posts = post_author.posts.select_related('group')
       page_obj = get_page_context(posts, request)
       context = {
           'page_obj': page_obj,
           'post_author': post_author, }
       return render(request, 'posts/profile.html', context)
   def post_detail(request, post_id):
       post = get_object_or_404(Post, id=post_id)
       context = {
           'post': post,
       }
       return render(request, 'posts/post_detail.html', context)
   def post_create(request):
       form = PostForm(request.POST or None)
       if form.is_valid():
           post = form.save(commit=False)
           post.author = request.user
           post.save()
           return redirect('posts:profile', username=request.user)
       return render(request, 'posts/create_post.html', {'form': form})
   def post_edit(request, post_id):
       post = get_object_or_404(Post, id=post_id)
       if request.user != post.author:
           return redirect('posts:post_detail')
       form = PostForm(request.POST or None, instance=post)
       if form.is_valid():
           form.save()
           return redirect('posts:post_detail', post_id=post_id)
       context = {'form': form, }
       return render(request, 'posts/create_post.html', context)

Вернуться на верх