Тестирование функции обновления публикацииPython

Программы на Python
Ответить
Anonymous
 Тестирование функции обновления публикации

Сообщение Anonymous »

Я не совсем понимаю, как обновлять сообщения в блоге на основе моего кода. Я использую представления на основе методов.

Код: Выделить всё

def create_post(request):
form_class = PostForm
template = 'addpost.html'

if request.method == "POST":
form = form_class(request.POST)
title = request.POST.get("title")
content = request.POST.get("content")
user_id = request.POST.get("author")

if request.user.has_perm("posts.add_post"):
Post.objects.create(
title=title,
content=content,
author=User.objects.get(pk=user_id)
)
else:
pass

return render(request, template)

def edit_post(request):
form_class = PostForm
template = 'editpost.html'

if request.method == "PATCH":
form = form_class(request.PATCH)
Title = request.PATCH.GET("title")
Content = request.PATCH.GET("content")
User_id = request.PATCH.GET("author")

if request.user.has_perm("posts.update_post") and (User_id == User.pk):
Post.objects.update(
title=Title,
content=Content,
author=User.objects.get(pk=User_id)
)
else:
pass

return render(request, template)

Для метода update_post я использую PATCH, UPDATE или POST-запрос в этом сценарии?
Имейте в виду, что я также использую этот метод в целях тестирования, поскольку хорошо.
Вот код Pytest:

Код: Выделить всё

class TestPermissions:
@pytest.mark.django_db
def test_post_add_contributor_group_permission(db):
client = Client()

user = User.objects.create_user(
username="testuser",
email="test@example.com",
password="pass123"
)

post_data = {
"title": "Post Title",
"content": "Post Content",
"author": user.id
}

group = Group.objects.create(name="Contributor")
client.login(username="testuser", password="pass123")

response = client.post(reverse("add_post"), post_data)

assert response.status_code == 200
assert Post.objects.all().count() == 0

content_type = ContentType.objects.get_for_model(Post)
permission = Permission.objects.get(
content_type=content_type,
codename__icontains="add"
)

group.permissions.add(permission)
user.groups.add(group)

response = client.post(reverse("add_post"), post_data)

assert response.status_code == 200
assert Post.objects.all().count() == 0

@pytest.mark.django_db
def test_post_update_contributor_group_permission(db):
client = Client()

user = User.objects.create_user(
username="testuser",
email="test@example.com",
password="pass123"
)

post_data = {
"title": "Post Title",
"content": "Post Content",
"author": user.id
}

group = Group.objects.create(name="Contributor")
client.login(username="testuser", password="pass123")

content_type = ContentType.objects.get_for_model(Post)
permission = Permission.objects.get(
content_type=content_type,
codename__icontains="add"
)

group.permissions.add(permission)
user.groups.add(group)

response = client.post(reverse("add_post"), post_data)

updated_data = {
"title": "Updated Post Title",
"content": "Updated Post Content",
"author": user.id
}
response = client.patch('edit_post//1', updated_data)

assert response.status_code == 200
Я использовал и патч, и обновление, но безуспешно. Есть ли кто-нибудь, кто может подсказать мне, как делать обновления?

Подробнее здесь: https://stackoverflow.com/questions/792 ... t-function
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»