Укажите тип носителя в почтовом запросе в Django rest (тесты) - PullRequest
0 голосов
/ 21 июня 2019

Я пишу несколько тестов для моего REST API, и у меня есть некоторые проблемы с POST-запросами

У меня есть данные для отправки:

data = {
    "patient": 34,
    "measure_cat": 52,
    "measure_type": "1",
    "date": "2019-06-11",
    "value": '',
    "unit": '',
    "nnu_value": "3"
}

Я построил свой заголовок и POST-запрос следующим образом:

headers = {'Authorization': 'Token '+ self.token.key, 'content_type':'application/json', 'Accept-Language' : 'en'}
response = requests.post('http://127.0.0.1:8000/saveMeasure/', json.dumps(data), headers=headers)

А тест - это простое утверждение 201:

self.assertEqual(response.status_code, 201)

Сервер отвечает с HTTP-статусом 415 Неподдерживаемый тип носителя:

Unsupported Media Type: /saveMeasure/
[21/Jun/2019 09:29:47] "POST /saveMeasure/ HTTP/1.1" 415 62

Я пропустил шаг настройки или что-то еще?

Не знаю, актуально это или нет, но я использую приборы в качестве тестовой базы данных. И это весь импорт, который у меня есть:

import json
import requests
from rest_framework.authtoken.models import Token
from rest_framework.test import APIRequestFactory, APITestCase, APIClient

ОБНОВЛЕНИЕ:

вот код моего представления для почтового запроса:

def post(self, request, *args, **kwargs):
        # remove persistant data
        persistant = False
        newMeasures = []
        for measure in request.data:
            persistant = check_persistant_measure(measure['measure_cat'], measure['measure_type'], measure['patient'], measure['value'], measure['nnu_value'], measure['b_value'])
            if persistant == False:
                newMeasures.append(measure)
        # add Related measure automatically calculated to request data
        try:
            calc_data = get_related_measures(newMeasures)
            for newM in calc_data:
                newMeasures.append(newM)
        except:
            pass

        serializer =  self.get_serializer(data=newMeasures, many = True, allow_empty = False)
        serializer.is_valid(raise_exception = True)     
        serializer.save()
        return  Response(serializer.data, status=status.HTTP_201_CREATED)

И это часть для тестирования:

class CustomerAPITestAdmin(APITestCase):
    fixtures = ['new-fixtures.json']

    def tokenSetUp(self,user):
        self.token = Token.objects.get(user__username=user)
        self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token.key)

    def testSaveMeasure(self):
        self.tokenSetUp('jpmichel')
        self.executeTest()

    def executeTest(self):

        data = {
            "patient": 34,
            "measure_cat": 52,
            "measure_type": "1",
            "date": "2019-06-11",
            "value": '',
            "unit": '',
            "nnu_value": "3"
        }

        print(json.dumps(data))

        headers = {'Authorization': 'Token '+ self.token.key, 'content_type':'application/json', 'Accept-Language' : 'en'}
        response = requests.post('http://127.0.0.1:8000/saveMeasure/', data=json.dumps(data), headers=headers)

        self.assertEqual(response.status_code, 201)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...