2017-12-02 2 views
0

@api_view으로 장식 된 api를 테스트 할 때 수동으로 테스트 할 때 응답과 일치하지 않는 형식이 나타납니다. 나는 다음과 같은 형식 기대 :Django Rest Framework APITestCase tofrmat가 필요합니다

{ 
    "field": "string value" 
} 

을하지만 난 (시험에서) 게시하려고 할 때 형식이 하나가 될 것으로 보인다 때문에 오류가 발생합니다

:

{ 
    "field": ["string_value"] 
} 

이 문제를 재현하려면

class Tests(rest_framework.test.APITestCase): 
    def test_api(self): 
     ... 
     response = self.client.post(url, data) 
     ... 
+0

'응답 = self.client.post (URL, 데이터 형식 = 'JSON')는 ' –

+0

이 내가 추가 할 필요가 없었다 다른 프로젝트가 답이다 형식, 왜 그렇습니까? –

+0

DRF 파서 설정 일 가능성이 큽니다. 당신의 견해를 보지 않고 정말로 말할 수는 없습니다. –

답변

0

response = self.client.post(url, data, format='json')

하면 코드에이를 추가해야합니다. format='json' 부분은 중요하므로 엔드 포인트가 수신하도록 설정되어 있다고 가정합니다. 엔드 포인트가 어떤 형식을 인식하는지 충분히 똑똑하지는 않지만, 설정 한 형식인지 여부를 인식합니다./@apiviewparser_class=(JSONParser,)) 또는 @parser_classes((JSONParser,))을 추가하여이를 덮어 쓸 수 있습니다.

settings.py 파일에서이 줄을 확인하십시오.

REST_FRAMEWORK = { 
    'DEFAULT_PARSER_CLASSES': (
    'rest_framework.parsers.JSONParser', 
    ) 
} 

http://www.django-rest-framework.org/api-guide/parsers/