Le corps d'un POST est envoyé dans un dictionnaire comme second argument à TestClient.post
:
class MyTestCase(TestCase):
def my_test_function(self):
response = self.client.post('/my-post-handler/', {'first': 'fred', 'last': 'dredd'})
self.assertEqual(response.status_code, 200)
Si cela ne fonctionne pas pour votre cas d'utilisation, vous voulez probablement sauter le TestClient tous ensemble et tester la fonction de vue directement. Pour ce faire, vous devez utiliser RequestFactory et l'envoyer en tant qu'argument de demande à la vue. Quelque chose comme ça, largement emprunté des documents que je Linked à:
from django.contrib.auth.models import AnonymousUser, User
from django.test import TestCase
from .views import my_view
class SimpleTest(TestCase):
def setUp(self):
self.factory = RequestFactory()
def test_details(self):
request = self.factory.get('/customer/details')
# Recall that middleware are not supported. You can simulate a
# logged-in user by setting request.user manually.
request.user = self.user
# Set the body to whatever you need it to be
request.body = b'{"first": "fred", "last": "dredd"}'
# Test my_view() as if it were deployed at /customer/details
response = my_view(request)
self.assertEqual(response.status_code, 200)
Je ne suis pas sûr de comprendre la question. Quelles données souhaitez-vous envoyer dans la demande de publication de test? – Alasdair