У меня есть тестовое представление:
@api_view(['POST'])
@permission_classes([AllowAny])
@authentication_classes([])
def test_view(request):
return Response(request.data)
Оно зарегистрировано в urls.py
:
urlpatterns = [
path('api/test/', test_view)
]
Когда я пытаюсь POST [{"a": 1}, {"a": 2}]
вручную через пользовательский интерфейс REST Frameworks,все работает нормально.
Однако, если я напишу тест для него, произойдет неожиданная ошибка. Вот тест
from rest_framework.test import APITestCase
class ViewTest(APITestCase):
def test_it(self):
response = self.client.post('/api/test/', [{"a": 1}, {"a": 2}])
print(response)
, который выдает следующую ошибку:
Traceback (most recent call last):
File "C:\development\HeedView\backend\clients\api\tests.py", line 13, in test_it
response = self.client.post('/api/test/', [{"a":1}, {"a": 2}])
File "C:\development\HeedView\venv\lib\site-packages\rest_framework\test.py", line 300, in post
path, data=data, format=format, content_type=content_type, **extra)
File "C:\development\HeedView\venv\lib\site-packages\rest_framework\test.py", line 212, in post
data, content_type = self._encode_data(data, format, content_type)
File "C:\development\HeedView\venv\lib\site-packages\rest_framework\test.py", line 184, in _encode_data
ret = renderer.render(data)
File "C:\development\HeedView\venv\lib\site-packages\rest_framework\renderers.py", line 921, in render
return encode_multipart(self.BOUNDARY, data)
File "C:\development\HeedView\venv\lib\site-packages\django\test\client.py", line 194, in encode_multipart
for (key, value) in data.items():
AttributeError: 'list' object has no attribute 'items'
Как объяснить это поведение?