반응형
단위 테스트에서 JSON으로 요청을 보내는 방법
요청에서 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
참고URL : https://stackoverflow.com/questions/28836893/how-to-send-requests-with-jsons-in-unit-tests
반응형
'development' 카테고리의 다른 글
jupyter 노트북에서 커널 제거 (0) | 2020.09.15 |
---|---|
HashTable은 충돌을 어떻게 처리합니까? (0) | 2020.09.15 |
디자인 패턴 학습 / 구현 (초보자 용) (0) | 2020.09.15 |
행을 찾을 수없는 경우 값 반환 SQL (0) | 2020.09.15 |
사전을 C #의 목록 컬렉션으로 변환 (0) | 2020.09.15 |