假設我想測試下瓶API(從http://flask-restful-cn.readthedocs.io/en/0.3.5/quickstart.html#a-minimal-api):如何單元測試瓶的RESTful API
import flask
import flask_restful
app = flask.Flask(__name__)
api = flask_restful.Api(app)
class HelloWorld(flask_restful.Resource):
def get(self):
return {'hello': 'world'}
api.add_resource(HelloWorld, '/')
if __name__ == "__main__":
app.run(debug=True)
救以此爲flaskapi.py
並運行它,在我運行在同一目錄腳本test_flaskapi.py
:
import unittest
import flaskapi
import requests
class TestFlaskApiUsingRequests(unittest.TestCase):
def test_hello_world(self):
response = requests.get('http://localhost:5000')
self.assertEqual(response.json(), {'hello': 'world'})
class TestFlaskApi(unittest.TestCase):
def setUp(self):
self.app = flaskapi.app.test_client()
def test_hello_world(self):
response = self.app.get('/')
if __name__ == "__main__":
unittest.main()
兩個測試通過,但對於第二個測試類(在TestFlaskApi
定義)我還沒有想出如何斷言JSON響應預期(即{'hello': 'world'}
)。這是因爲它是flask.wrappers.Response
(它可能基本上是一個Werkzeug響應對象(參見http://werkzeug.pocoo.org/docs/0.11/wrappers/))的實例,並且我還找不到requests
'Response'對象的等效方法json()
。
如何在第二個response
的JSON內容上做出斷言?
「狀態:Flask API目前未處於活動開發狀態。」來自https://github.com/flask-api/flask-api – TheGrimmScientist