2017-12-12 1 views
1

플라스크의 테스트 클라이언트에 대한 기본값 content_type 값을 설정하는 방법이 있습니까? 예를 들어플라스크 테스트 클라이언트의 기본 content_type 설정

, 나는 다음과 같은 시험이있는 경우 :

import unittest 

class MyTestCase(unittest.TestCase): 

    def setUp(self): 
     from my_flask_project import app 
     self.client = app.test_client() 

    def test_request_one(self): 
     self.client.post(
      data='{}' 
      content_type='application/json' 
     ) 

    def test_request_two(self): 
     self.client.post(
      data='{}' 
      content_type='application/json' 
     ) 

내 모든 테스트 사례를 content_type='application/json'을 설정하는 것입니다. application/json을 요청의 기본 콘텐츠 유형으로 설정하고 싶지만이를 수행하는 방법에 대한 문서를 찾을 수 없습니다. 이 같은

뭔가 이상적 일 것이다 :

def setUp(self): 
    from my_flask_project import app 
    self.client = app.test_client(
     default_content_type='application/json' 
    ) 

답변

1

가장 헤더 를 들어, 다른 헤더를 설정하는 environ_base DICT를 전달할 수 있습니다. 그러나 테스트 클라이언트는 전달 된 값에 always set the Content-Type header을 입력하여 기준을 대체합니다. 이 오버라이드를 재정의 할 수있는 environ_overrides도 있지만, 헤더를 다른 것으로 설정할 수 없다는 것을 의미합니다. 이는 원하는 것이 아닐 수 있습니다.

전달되지 않은 기본 콘텐츠 형식을 설정하는 사용자 지정 TestClient 클래스를 만듭니다. 이 클래스를 Flask 앱 test_client_class에 할당하면 테스트 클라이언트를 만들 때이 클래스가 사용됩니다.

from flask.testing import FlaskClient 

class CustomClient(FlaskClient): 
    def open(self, *args, **kwargs): 
     kwargs.setdefault('content_type', 'application/json') 
     return super().open(*args, **kwargs) 

app.test_client_class = CustomClient 

당신은 단지 content_type, environ_base을 포함한 모든 인수를 위해이 기술을 사용할 수 있습니다.

관련 문제