У меня есть класс, который принимает список словарей - data = [{}, {}]
. Если я отправлю данные через Postman, все будет работать, но проблема с тестированием метода класса POST.
Ошибка:
FAIL: test_vendor_from_csv_create (vendors.tests.VendorCsvCreateTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/y700/projects/solution/apps/vendors/tests.py", line 128, in test_vendor_from_csv_create
self.assertEqual(response.status_code, status.HTTP_200_OK)
AssertionError: 404 != 200
views.py
class CsvToDatabase(APIView):
def post(self, request, format=None):
r_data = request.data
for data in r_data:
if data['nda'] == '':
data['nda'] = None
...
#some logic
serializer = VendorsCsvSerializer(data=data)
try:
serializer.is_valid(raise_exception=True)
serializer.save()
except ValidationError:
return Response({"errors": (serializer.errors,)},
status=status.HTTP_400_BAD_REQUEST)
else:
return Response(request.data, status=status.HTTP_200_OK)
test.py
class VendorCsvCreateTest(APITestCase):
#API
def test_vendor_from_csv_create(self):
url = reverse('csv_vendor_create')
response = self.client.post(url, data, format='json')
self.assertEqual(response.status_code, status.HTTP_200_OK)
Я предполагаю, что проблема format='json'
. Если это так, как я могу передать данные в нужном формате? Если причина в другом, вы можете дать мне решение, пожалуйста! И я вообще не понимаю, почему status = 404
, а не 400
, если это проблема с данными. Если я сделаю print(url)
, он вернет реальный URL страницы. Если установлено data = []
пустой список - status=200
возврат.
urls.py
urlpatterns = [
path('csv_upload/', FileUploadView.as_view(), name='csv_upload'),
path('from_csv_create/', CsvToDatabase.as_view(), name='csv_vendor_create'),
path('create/', VendorsCreateView.as_view(), name='vendor_create'),]