gpt4 book ai didi

python - 如何将集成测试应用于 Flask RESTful API

转载 作者:IT老高 更新时间:2023-10-28 20:35:35 25 4
gpt4 key购买 nike

[根据 https://stackoverflow.com/a/46369945/1021819 , 标题应该指集成测试而不是单元测试]

假设我想测试以下 Flask API(来自 here):

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 响应符合预期(即 {'你好':'世界'})。这是因为它是 flask.wrappers.Response 的一个实例(它可能本质上是一个 Werkzeug Response 对象(参见 http://werkzeug.pocoo.org/docs/0.11/wrappers/ )),我还没有找到等价的requestsjson() 方法 Response对象。

如何对第二个 response 的 JSON 内容进行断言?

最佳答案

Flask 提供了一个你可以在测试中使用的 test_client:

from source.api import app
from unittest import TestCase

class TestIntegrations(TestCase):
def setUp(self):
self.app = app.test_client()

def test_thing(self):
response = self.app.get('/')
assert <make your assertion here>

Flask Testing Docs

关于python - 如何将集成测试应用于 Flask RESTful API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41718376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com