요청에서 JSON을 사용하는 Flask 응용 프로그램 내에 코드가 있으며 다음과 같이 JSON 개체를 가져올 수 있습니다.
Request = request.get_json()
이것은 잘 작동했지만 Python의 unittest 모듈을 사용하여 단위 테스트를 만들려고 시도 중이며 요청과 함께 JSON을 보내는 방법을 찾는 데 어려움이 있습니다.
response=self.app.post('/test_function',
data=json.dumps(dict(foo = 'bar')))
이것은 나에게 준다 :
>>> request.get_data()
'{"foo": "bar"}'
>>> request.get_json()
None
Flask에는 post 요청 내에서 json = dict (foo = ‘bar’) 설정할 수있는 JSON 인수가있는 것 같지만 unittest 모듈로이를 수행하는 방법을 모르겠습니다.
답변
게시물을 다음으로 변경
response=self.app.post('/test_function',
data=json.dumps(dict(foo='bar')),
content_type='application/json')
고쳤다.
user3012759에게 감사드립니다.
답변
업데이트 : Flask 1.0 릴리스 flask.testing.FlaskClient
메서드는 json
인수와 Response.get_json
메서드 추가를 허용 하므로 예제를 참조하십시오 .
Flask 0.x의 경우 아래 영수증을 사용할 수 있습니다.
from flask import Flask, Response as BaseResponse, json
from flask.testing import FlaskClient
from werkzeug.utils import cached_property
class Response(BaseResponse):
@cached_property
def json(self):
return json.loads(self.data)
class TestClient(FlaskClient):
def open(self, *args, **kwargs):
if 'json' in kwargs:
kwargs['data'] = json.dumps(kwargs.pop('json'))
kwargs['content_type'] = 'application/json'
return super(TestClient, self).open(*args, **kwargs)
app = Flask(__name__)
app.response_class = Response
app.test_client_class = TestClient
app.testing = True