Как я могу передать id поста через клиента во время тестирования в Django?

def test_sharing_post_through_email(self):
        form = {'name': 'Martin', 'email': 'exampel.example@gmail.com', 'to': 'Martinals@gmail.com'}
        
        response = self.client.post('/<int:id>/share/', data={'post': self.post, 'form': form})
        response.user = self.user

        self.assertEqual(response.status_code, 200)
        self.assertIsInstance(response.context, dict)
        self.assertEqual(response.context['sent'], True)

как я могу передать ID в url?

Вы должны использовать reverse из django.urls. Предположим, что ваш url определен в urls.py как:

path('/<int:id>/share/', views.share_view, name="share_view")

Вы можете передать id с обратным значением как:

from django.urls import reverse

def test_sharing(self):
    url = reverse("share_view", kwargs={"id": 1234})
    response = self.client.post(url, data={"post": "1"})

Вы должны использовать имя приложения в обратном вызове. Если ваш целевой вид находится в приложении "home":

url = reverse("home:share_view", kwargs={"id": 1234})
Вернуться на верх